![](/img/trans.png)
[英]How to pass data parameters throw List Tile to a Stateful Widget in DART?
[英]Flutter/Dart: Pass Parameters to a Stateful Widget?
我需要調用將我的title
和oldtitle
參數傳遞給我的EditPage
Stateful 小部件。 但是,如果我這樣做;
class EditPage extends StatefulWidget {
String title;
String oldtitle;
EditPage({this.title, this.oldtitle})
除非我將它們稱為widget.title
和widget.oldtitle
,否則這些字符串對構建不可用。
但是如果我使用這些小部件,我在表單中使用的textfield
似乎無法正常工作。
這是表單代碼:
Container(
child: TextField(
decoration: new InputDecoration(
hintText: widget.oldtitle,
contentPadding: new EdgeInsets.all(1.0),
border: InputBorder.none,
filled: true,
fillColor: Colors.grey[300],
),
keyboardType: TextInputType.text,
autocorrect: false,
onChanged: (titleText) {
setState(() {
widget.title= titleText;
});
},
),
),
但是,如果我這樣做;
class _EditPageState extends State<EditPage> {
String title;
String oldtitle;
EditPage({this.title, this.oldtitle})
我無法從另一個屏幕將標題參數傳遞給它。 IE:
`EditPage(title:mytitle, oldtitle:myoldtitle);`
那么將參數傳遞給有狀態小部件的正確方法是什么?
您永遠不應將變量直接傳遞給 state,因為它不能保證在更新 state 時會重建小部件。 您應該通過有狀態小部件接受參數,並通過widget.variable
從 state 本身訪問它們。
例子:
class TestWidget extends StatefulWidget {
final String variable;
TestWidget({Key key, @required this.variable}) : super(key: key);
@override
_TestWidgetState createState() => _TestWidgetState();
}
class _TestWidgetState extends State<TestWidget> {
@override
Widget build(BuildContext context) {
return Container(
child: Center(
// Accessing the variables passed into the StatefulWidget.
child: Text(widget.variable),
),
);
}
}
看起來解決方案是將標題與舊標題分開;
class EditPage extends StatefulWidget {
String oldtitle;
EditPage({this.oldtitle})
接着;
class _EditPageState extends State<EditPage> {
String title;
所以現在是表格;
Container(
child: TextField(
decoration: new InputDecoration(
hintText: widget.oldtitle,
contentPadding: new EdgeInsets.all(1.0),
border: InputBorder.none,
filled: true,
fillColor: Colors.grey[300],
),
keyboardType: TextInputType.text,
autocorrect: false,
onChanged: (titleText) {
setState(() {
title= titleText;
});
},
),
),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.