如何将数据从扩展数据表源类传递到 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,共享扩展,似乎无法将数据从扩展传递到容器应用程序

将 HashTable 数据从 php.ini 传递到扩展方法:损坏的值

从活动传递数据到类扩展视图