为PaginatedDataTable管理DataTableSource的最佳方法?

时间:2018-06-26 18:53:05

标签: dart flutter

编写我的第一个Flutter应用程序,我们需要使用PaginatedDataTable。文档说source字段应该

  

通常具有比PaginatedDataTable更长的生存期   小部件本身;每次PaginatedDataTable都应重用它   构造函数被调用。

https://docs.flutter.io/flutter/material/PaginatedDataTable/source.html

管理此问题的最佳方法是什么?有共同的模式吗?我最初的想法是单例模式,但是我来自Java世界,所以不确定这是否正确。

您还能解释为什么 DataTableSource应该被重用吗?谢谢。

1 个答案:

答案 0 :(得分:2)

DataTableSource是表的状态。它包含您所有的表数据以及是否选择了行。

它必须保留在某个地方,因为如果每次重新创建DataSource时,您都会失去所有选择和可能加载的数据。 考虑到数据是延迟加载的,并且可能来自http调用,因此尤其如此。

理想情况下,您希望将DataSource存储在StatefulWidget或类似的东西(InheritedWidget,Stream等)中。

class MyTable extends StatefulWidget {
  @override
  _MyTableState createState() => new _MyTableState();
}

class _MyTableState extends State<MyTable> {
  final myDataSource = new MyDataSource();

  ...
}
相关问题