我不明白为什么刷新页面时会多次调用我的类构造函数
或小部件值更改...?
示例:我向参数中的页面发送一些数据以填充一些async
并使用此textField数据。
await
因此,在本期中,如果我修改TextFormField
以更新数据,
当我按下按钮以获取import 'package:flutter/material.dart';
class AddProductPage extends StatelessWidget {
static String tag = 'add-product-page';
final TextEditingController _titleController = new TextEditingController();
String text;
AddProductPage({Key key, @required this.text}) : super(key: key) {
_titleController.text = this.text;
}
@override
Widget build(BuildContext context) {
final title = TextFormField(
keyboardType: TextInputType.text,
controller: _titleController,
decoration: InputDecoration(
labelText: 'Product Name',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
//border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
),
);
final addproductButton = Padding(
padding: EdgeInsets.symmetric(vertical: 16.0),
child: RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(24),
),
onPressed: (){
this.text =_titleController.text;
//XXX
//Do some stuff with this.text
},
padding: EdgeInsets.all(12),
color: Colors.lightBlueAccent,
child: Text('Add Product', style: TextStyle(color: Colors.white)),
),
);
final body = Container(
width: MediaQuery.of(context).size.width,
padding: EdgeInsets.all(28.0),
decoration: BoxDecoration(
gradient: LinearGradient(colors: [
Colors.white10,
Colors.orange[200],
]),
),
child: Column(
children: <Widget>[title, addproductButton],
),
);
return Scaffold(
resizeToAvoidBottomPadding: false,
body: body,
);
}
}
的最后一个文本时,TextFormField
的值始终与构造函数中给出的值相同。因为在我编辑text
时多次调用了构造函数。
TextFormField
TextFormField
谢谢
答案 0 :(得分:0)
如何查找您的文字是否未更改。有两件事要注意。
AddProductPage
应该是一个有状态的小部件,以呈现更改后的文本。在使用TextEditingController
时将其用作参考。
Cookbook1
Cookbook 2
TextEditingController类