返回
掌握Flutter中Navigator数据传递,让你如虎添翼
闲谈
2023-10-18 09:13:26
在Flutter中,路由间的页面跳转使用的是Navigator.push、Navigator.pop方法。
1、目标页面的构造函数显式接收参数。例如跳转过去的是SearchPage,接收一个字符串参数,则如下所示:
class SearchPage extends StatelessWidget {
final String query;
SearchPage({required this.query});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Search Result for "$query"'),
),
body: Center(
child: Text('Search results will be shown here'),
),
);
}
}
2、我们还可以使用Route的RouteSetting参数进行数据传递,具体如下:
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SearchPage(),
settings: RouteSettings(arguments: query),
),
);
3、Navigator.pushNamed传递数据,使用RouteSettings中的arguments传递数据:
Navigator.pushNamed(
context,
'/search',
arguments: query,
);
4、接收数据:
class SearchPage extends StatelessWidget {
final String query;
SearchPage({required this.query});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Search Result for "$query"'),
),
body: Center(
child: Text('Search results will be shown here'),
),
);
}
}
5、返回数据:
Navigator.pop(context, result);
6、接收返回数据:
Future<String> result = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SearchPage(),
),
);
希望这些内容对您有所帮助。如果您有任何疑问,请随时与我联系。