flutter - 如何在 FLutter 中使用 pushNamed 将数据从一个屏幕传递到另一个屏幕?
问题描述
我想使用 pushNamed 将文本框控制器的数据从一个屏幕传递到另一个屏幕,那么如何传递数据?
这是导航屏幕的方法。正如第一页中的贝娄。
@override
void validateOtpSuccess() {
Navigator.of(context).popAndPushNamed(Constants.ROUTE_CHANGE_PASSWORD);
}
我想在更改密码屏幕上获取数据,那么我如何访问数据以更改密码屏幕?
解决方案
在第一页(假设data
是 a String
):
final result = await Navigator.pushNamed<String?>(context, '/change_password_page', arguments: data);
在你的onGenerateRoute
方法中:
Route? onGenerateRoute(RouteSettings settings) {
...
switch (settings.name) {
...
case '/change_password_page':
final data = settings.arguments as String?;
return MaterialPageRoute<String?>(
builder: (context) => ChangePasswordPage(arguments: data!),
);
在您的ChangePasswordPage
小部件中:
class ChangePasswordPage extends StatefulWidget {
final String data;
const ChangePasswordPage({required this.data, Key? key}) : super(key: key);
@override
_ChangePasswordPageState createState() => _ChangePasswordPageState();
}
...
Navigator.pop<String?>(context, _newPassword);