在另一个dart文件上将Flutter参数转换为可用变量



我的最终目标是将一个userName变量从一个dart文件传输到另一个dart文件。

Firebase身份验证将只接受电子邮件和密码输入,因此我需要将用户名变量作为参数传递到另一个文件中,该文件在验证用户电子邮件后调用。

我一直在尝试在网上查找视频和文档,我发现的大部分内容都是试图将数据放入列表中(我希望避免(。我不明白;这个"getter函数在flutter中,我不知道是否有必要解决这个问题。如果有什么我可以澄清的,请告诉我,我希望我忽略了一些简单的事情。

Dart文件#1

onPressed: () => signUp(_email, _password).then((_) {
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (context) => Verify(_userName)));
}),

Dart文件#2

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
class Verify extends StatefulWidget {
const Verify(String _userName, {Key? key}) : super(key: key);
@override
_VerifyState createState() => _VerifyState();
}
class _VerifyState extends State<Verify> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child:
Text('Here is your variable $_userName please verify'),
),
);
}

我猜您在询问在不同屏幕之间传递参数(任何对象(的问题。您可以通过在RouteSettings中传递它来轻松实现这一点,您可以传递任何对象(String、int、map(,然后在另一个Screen的构建方法中获取它。

class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TextButton(
onPressed: () => Navigator.push(
context, MaterialPageRoute(
builder: (context) => HomeScreen(), 
settings: const RouteSettings(arguments: 'username')),), //arguments
child: Text('Hello, World!', 
style: Theme.of(context).textTheme.headline4,
),
);
}
}
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as String; //arguments
return TextButton(
onPressed: () {},
child: Text(args, 
style: Theme.of(context).textTheme.headline4,
),
);
}
}

最新更新