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();
...
}