正确执行刷新按钮

时间:2019-04-05 15:07:32

标签: flutter

这似乎是一个简单的问题(也许是),但是我对Flutter还是陌生的,我没有找到实现此功能的正确方法。

我在CupertinoPageScaffold中有一个有状态的小部件。 支架位于CupertinoNavigationBar内,该{@ 1}具有一个“刷新”按钮。

窗口小部件具有CupertinoButton来异步生成内容。

通过按下此按钮,我想刷新支架内部小部件的状态。

该按钮当然具有FutureBuilder闭包,但是我不知道该按钮如何与小部件的状态进行交互(实际上,onPressed()应该只能在小部件的状态本身内部调用。

setState()

如何实现此刷新按钮的正确方法?

编辑

目前这是我所拥有的:

+---------------------------+
|  Refresh                  |
|  Button+-----------------------------+
+---------------------------+          |
|                           |          |
|  +--Stateful Widget+---+  |          |
|  |                     |  |          |
|  | +----------------+  |  |          |
|  | |                |  |  |          |
|  | |                |  |  |          |
|  | |                |  |  |          |
|  | |    State       |  |  |          |
|  | |     &          |  |  |          |
|  | |    Future    <------------------+
|  | |    Builder     |  |  |
|  | |                |  |  |
|  | |                |  |  |
|  | |                |  |  |
|  | +----------------+  |  |
|  |                     |  |
|  +---------------------+  |
|                           |
+---------------------------+

以及使用class PostListScaffold extends StatelessWidget { final CategoryMetadata category; PostListScaffold({this.category}); @override Widget build(BuildContext context) { return CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( middle: Image(image: AssetImage("assets/logo.png")), heroTag: "post_list", transitionBetweenRoutes: false, actionsForegroundColor: MyColors.mainColor, ), child: PostsTableList(category) ); } } class PostsTableList extends StatefulWidget { final CategoryMetadata category; PostsTableList(this.category); @override PostsTableListState createState() => PostsTableListState(category: category); } 构建列表的状态:

FutureBuilder

2 个答案:

答案 0 :(得分:0)

您应该使用流

当您按下刷新按钮时,它应该添加到您的接收器中。 订阅流的所有小部件都将刷新。

我认为您应该了解有关流的更多信息。尝试学习 bloc模式,它依赖于流的概念。

以下是可帮助您入门的链接:https://medium.com/flutterpub/architecting-your-flutter-project-bd04e144a8f1

答案 1 :(得分:0)

您可以在顶级窗口小部件上使用InheritedNotifier,并且“刷新”按钮可以在那里更新值,这将触发其他也访问该值的窗口小部件的重建。