flutter 通知不同页面传值
时间: 2023-07-28 21:07:44 浏览: 188
在 Flutter 中,如果需要在不同页面之间传递数据,可以使用以下两种方法:
1. 使用全局变量
在 Flutter 中,可以使用全局变量来存储需要在不同页面之间共享的数据,例如:
```
class GlobalData {
static String username = "";
static int age = 0;
}
```
在任意页面中,可以通过 `GlobalData.username` 和 `GlobalData.age` 来获取或设置全局变量的值。
需要注意的是,全局变量可能会导致数据混乱或冲突,因此应该尽量避免过多地使用全局变量。
2. 使用路由传递参数
在 Flutter 中,每个页面都是一个 Widget,可以通过 Navigator.pushNamed() 方法打开一个新的页面,并在打开页面时传递参数:
```
Navigator.pushNamed(context, '/page2', arguments: {'name': 'John', 'age': 30});
```
在打开的页面中,可以通过以下方式获取传递的参数:
```
final Map<String, dynamic> args = ModalRoute.of(context)!.settings.arguments as Map<String, dynamic>;
final String name = args['name'];
final int age = args['age'];
```
需要注意的是,`ModalRoute.of(context)!.settings.arguments` 可能为空,因此应该使用 `as` 关键字进行类型转换,并进行 null 检查。同时,传递的参数类型必须是可序列化的类型,例如 Map、List、String、int、double 等。
阅读全文