如何将数据从扩展数据表源类传递到 StateFul 类
Posted
技术标签:
【中文标题】如何将数据从扩展数据表源类传递到 StateFul 类【英文标题】:How to pass data from class of extends DataTableSource to StateFull Class 【发布时间】:2021-03-30 08:46:23 【问题描述】:我有 PaginatedDataTable 并将源的 PaginatedDataTable 的属性放到另一个类中。这是代码
class MainPage extends StatefulWidget
MainPage(Key key) : super(key: key);
@override
_MainPageState createState() => new _MainPageState();
class _MainPageState extends State<MainPage>
@override
Widget build(BuildContext context)
return Scaffold(
body: PaginatedDataTable(
header: Center(
child: Text(
'List Data'
)),
onRowsPerPageChanged:...
columns: <DataColumn>[
DataColumn(label: Text('No.')),
DataColumn(label: Text('Data 1')),
DataColumn(label: Text('Data 2'))
],
source: mysource,
rowsPerPage:...
)
)
对于我的来源:
class MySource extends DataTableSource
...
但让我感到困惑的是......在我处理我在class MySource extends DataTableSource
中的数据之后,我不知道如何从那里传递数据以在 StateFulWidget 的 MainPage 中调用它......所以有没有办法从class MainPage extends StatefulWidget
调用class MySource extends DataTableSource
内部的数据
【问题讨论】:
请清除您的问题。 抱歉造成误解,实际上我需要在 DataTableSource 中调用 state 之类的东西,该状态将用于填写表格上方的表格(例如保存新数据和编辑旧数据,然后用更新的数据刷新表的行).. 因为我们知道 PaginatedDataTable 在 StatefulWidget 内部,而 PaginatedDataTable 的源在 StatefulWidget 外部,有关更多详细信息,我已添加来自@MevlütGür 答案的评论 【参考方案1】:为您的问题编写代码,希望对您有所帮助。
class _MainPageState extends State<MainPage>
@override
Widget build(BuildContext context)
MySource mySource = new MySource(["ab","bc","de","ef"]);
return Scaffold(
body: Column(
children: [
//Widget form
PaginatedDataTable(
header: Center(child: Text('List Data')),
columns: <DataColumn>[
DataColumn(label: Text('No.')),
DataColumn(label: Text('Data 1')),
DataColumn(label: Text('Action')),
],
source: mySource,
),
],
));
class MySource extends DataTableSource
List<String> value;
MySource(this.value)
print(value);
@override
DataRow getRow(int index)
// TODO: implement getRow
return DataRow.byIndex(
index: index,
cells: [
DataCell(Text('$index')),
DataCell(Text(value[index])),
DataCell(InkWell(
onTap:()
//fill the form above the table and after user fill it, the data inside the table will be refreshed
,
child: Text("Click"),
),),
],);
@override
// TODO: implement isRowCountApproximate
bool get isRowCountApproximate => false;
@override
// TODO: implement rowCount
int get rowCount => value.length;
@override
// TODO: implement selectedRowCount
int get selectedRowCount =>0;
【讨论】:
嗨,谢谢@MevlütGür,实际上我在DataCell 中有按钮,并且我在表格上方有一个表格,所以当用户单击按钮时,我需要处理表格上方的表格 我已经编辑了你的答案,让我困惑的是如何在InkWell
中调用类似状态的东西,我将使用该状态来保存或编辑表格数据行中的表单跨度>
据我了解,这是状态概念的错误方式。您可以申请 this video 或 tis web page。
非常感谢@MevlütGür 我会尝试看看你的视频和文章链接
@uyhaW,你找到解决办法了吗?以上是关于如何将数据从扩展数据表源类传递到 StateFul 类的主要内容,如果未能解决你的问题,请参考以下文章
具有复制属性的类方法的元数据在更改源类的元数据时发生更改 - Typescript
Swift - 如何将数据从 UITableViewCell 类传递到 UIViewController
Xcode 7.3,共享扩展,似乎无法将数据从扩展传递到容器应用程序