管理 PaginatedDataTable 的 DataTableSource 的最佳方法?

Gre*_*Noe 3 dart flutter

编写我的第一个 Flutter 应用程序,我们需要使用PaginatedDataTable. 文档说该source领域应该

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

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

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

你也可以解释为什么DataTableSource应该被重复使用?谢谢。

Rém*_*let 5

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

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

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

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

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

  ...
}
Run Code Online (Sandbox Code Playgroud)