Dart 为PaginatedDataTable管理DataTableSource的最佳方法?

Dart 为PaginatedDataTable管理DataTableSource的最佳方法?,dart,flutter,Dart,Flutter,编写我的第一个颤振应用程序时,我们需要使用一个paginateddatable。文档说源字段应该 通常具有比分页数据表更长的生命周期 小部件本身;每次分页时都应重复使用它 构造函数被调用 最好的管理方法是什么?有共同的模式吗?我最初的想法是单例模式,但我来自Java世界,所以我不确定这是否正确 您还可以解释一下为什么应该重用DataTableSource?谢谢。DataTableSource是表的状态。它包含所有表数据以及是否选择了行 它必须被保存在某个地方,因为如果每次重新创建数据源,就会丢

编写我的第一个颤振应用程序时,我们需要使用一个
paginateddatable
。文档说
字段应该

通常具有比分页数据表更长的生命周期 小部件本身;每次分页时都应重复使用它 构造函数被调用

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


您还可以解释一下为什么应该重用
DataTableSource
?谢谢。

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

它必须被保存在某个地方,因为如果每次重新创建数据源,就会丢失所有选择和可能加载的数据。 考虑到数据是延迟加载的,并且可能来自http调用,这一点尤其正确

理想情况下,您希望将数据源存储在StatefulWidget或类似的东西(InheritedWidget、流等)中

类MyTable扩展StatefulWidget{
@凌驾
_MyTableState createState()=>new_MyTableState();
}
类_MyTableState扩展了状态{
最终myDataSource=新的myDataSource();
...
}

所以当它说数据源应该比PaginatedDataTable寿命更长时,我认为这意味着每次我们导航到该页面时都可以创建一个新的DataSource,而不是说每次创建表小部件都应该只有一个DataSource对象?抱歉,如果这不合理。这取决于您的用例。你这部分的问题没有有限的答案。这取决于数据源的创建和更新方式。@RémiRousselet,我想实现您的答案,当我搜索如何使用DataTableSource时,它总是使用
类示例NME扩展DataTableSource{}
。。您希望给出在Statefull中实现DataTableSource的示例吗?
class MyTable extends StatefulWidget {
  @override
  _MyTableState createState() => new _MyTableState();
}

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

  ...
}