Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 在Flatter应用程序屏幕之间传递数据或参数的最佳方式是什么?_User Interface_Architecture_Dart_Flutter_State - Fatal编程技术网

User interface 在Flatter应用程序屏幕之间传递数据或参数的最佳方式是什么?

User interface 在Flatter应用程序屏幕之间传递数据或参数的最佳方式是什么?,user-interface,architecture,dart,flutter,state,User Interface,Architecture,Dart,Flutter,State,为了将参数从一个屏幕发送到另一个屏幕,我必须将此参数设置为widgets类中的一个字段。由于许多参数被传递给几个小部件,我认为这可能会给更大的应用程序带来问题 高效地在屏幕之间传递数据的最佳方式是什么?通常最好的方式是使用应用程序状态管理。在切换路由之前编辑状态,并在新屏幕上读取状态。如果使用持久性,还可以将应用程序恢复到关闭后的最后状态(这在手机上经常发生) 根据应用程序状态的复杂性,您可以使用flatter内置的状态管理或类似redux的插件 Redux需要更多的样板代码,但也提供了更多的灵

为了将参数从一个屏幕发送到另一个屏幕,我必须将此参数设置为widgets类中的一个字段。由于许多参数被传递给几个小部件,我认为这可能会给更大的应用程序带来问题


高效地在屏幕之间传递数据的最佳方式是什么?

通常最好的方式是使用应用程序状态管理。在切换路由之前编辑状态,并在新屏幕上读取状态。如果使用持久性,还可以将应用程序恢复到关闭后的最后状态(这在手机上经常发生)

根据应用程序状态的复杂性,您可以使用flatter内置的状态管理或类似redux的插件

Redux需要更多的样板代码,但也提供了更多的灵活性,适用于经常需要的非常大的应用程序

这里有一些关于这个主题的有趣文章

备选方案是在路线导航上传递参数。这可以作为路由字符串的一部分(不适用于静态路由字符串)或使用MaterialPage路由(例如()

还有一个使传递参数变得容易的包:
https://pub.dartlang.org/packages/navigate.

导航包的示例如下所示(摘自此):


使用状态管理
  Map arg =  {"transactionType":TransactionType.fromLeft,"replaceRoute":ReplaceRoute.thisOne};
    Navigate.navigate(context,
                          "home",
                          transactionType:TransactionType.fromLeft ,
                          replaceRoute: ReplaceRoute.thisOne,
                          arg: arg
                          );