编写我的第一个Flutter应用程序,我们需要使用PaginatedDataTable
。文档说source
字段应该
通常具有比PaginatedDataTable更长的生存期 小部件本身;每次PaginatedDataTable都应重用它 构造函数被调用。
https://docs.flutter.io/flutter/material/PaginatedDataTable/source.html
管理此问题的最佳方法是什么?有共同的模式吗?我最初的想法是单例模式,但是我来自Java世界,所以不确定这是否正确。
您还能解释为什么 DataTableSource
应该被重用吗?谢谢。
答案 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();
...
}