[英]Flutter passing data to Stateful Widget
我有點卡住了。 我想將我的 controller 中的數據傳遞給我想在另一個 class 中使用的 email 字符串。 如何從 controller 獲取數據並將其傳遞給 Stateful 小部件?
import 'package:jptapp/core/constants/colors.dart';
class LoginPageEmail extends StatefulWidget {
String email;
@override
_LoginPageEmailState createState() => _LoginPageEmailState();
}
class _LoginPageEmailState extends State<LoginPageEmail> {
final myController = TextEditingController();
@override
void initState() {
super.initState();
}
@override
void dispose() {
myController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: myController,
keyboardType: TextInputType.emailAddress,
decoration: InputDecoration(
fillColor: MyColors.loginFieldColor,
hintText: 'Email',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
),
);
}
}
有多種方法可以在小部件之間傳遞數據,一種方法是在推送頁面時在構造函數中接受數據。 如果要將數據向下傳遞到堆棧,另一種方法是在調用Navigator.of(context).pop()
時,它們是傳遞數據的可選參數結果。
選項1
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ExamplePage(myController.text)),
);
//On the page that is accepting the data
class ExamplePage extends StatefulWidget {
String email;
ExamplePage(this.email)
@override
_CheckBoxPageState createState() => _CheckBoxPageState();
}
選項 2
Navigator.pop(context, 'Data');
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => ExamplePage()),
);
希望您發現這對您有幫助,如果還有什么我可以幫助您,讓我知道還可以查看處理 state 管理的Provider Package很棒的 package。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.