动态地从一个小部件共享变量数据到另一个小部件



我有一个StatefulWidgetpost_view,创建一个DataTable。用于填充DataTable的数据来自另一个名为Post:

的类中的静态方法。

static  generateData(){
List<Post> postList= [];
postList.add(Post(title: "Coolest Post", numDownVotes: 6, numUpVotes: 9));
postList.add(Post(title: "Covid-19 vaccine found!", numDownVotes: 3, numUpVotes: 67));
postList.add(Post(title: "Unreal ending to basketball game", numDownVotes: 2, numUpVotes: 23));
postList.add(Post(title: "Sample Post", numDownVotes: 2, numUpVotes: 6));
postList.add(Post(title: "What A Save!", numDownVotes: 5, numUpVotes: 34));

return postList;
}

我在表中有DataCells,这样向上/向下投票的数量在数据单元格内的行小部件中,以及一个图标按钮,分别更改或增加/减少向上/向下投票的数量。因此,我在post_view中声明了一个变量'_posts',它调用generateData()并显示数据,但我希望能够操纵这些数据并将其传递给另一个小部件BarGraph,这将生成动态数据的条形图。

这是我的BarGraph小部件:

class BarGraph extends StatefulWidget {
BarGraph({Key? key, required this.tableData}) : super(key: key);
List<Post>? tableData;
@override
State<BarGraph> createState() => _BarGraphState();
}

这里的问题是TabelData根本无法访问,但我希望能够获得标题,numupvotes和numdownvotes,以便能够在图表中显示它们。我尝试使用getter,但null检查操作符不起作用。我完全卡住了,任何帮助都会很感激!

你可以提升你的状态或者使用状态管理包

参考

  • 解除状态
  • 上升状态

状态管理包

  • GetX
  • Riverpod
  • 和更多…

找到答案了!通过使用widget.tableData,我可以访问传递给该变量的数据。

如何使用任何状态管理方法,例如:Bloc、Provider等?使用这些库可以解决问题,并使代码更有条理。例如,使用bloc将看起来像

class ManagePost extends Cubit<List<Post>> {
List<Post> postList = [];
void addPost(Post post) {
postList.add(Post);
emit(postList);
}
void deletePost() {}
void updateVote() {}
void getAllPost() {}
}

接下来,把你的视图封装在BlocBuilder中,它将监听post list的状态并更新UI。

相关内容

  • 没有找到相关文章

最新更新