flutter - 如何在小部件之外获取 TextFiled 值
问题描述
TextFiled 类
class InputContainer extends StatefulWidget{
final _InputContainerInner input = new _InputContainerInner();
@override
State<StatefulWidget> createState() {
return input;
}
}
class _InputContainerInner extends State<InputContainer>{
TextEditingController controller = TextEditingController();
String num = '';
@override
Widget build(BuildContext context) {
return Container(
...
child: TextField(
...
controller: controller,
...
)
)
}
我在另一个文件中使用它
Widget build(BuildContext context) {
InputContainer passWord = new InputContainer();
return Scaffold(
body: new Column(
children: <Widget>[
passWord,
new MaterialButton(
onPressed: () {
print(passWord.input);
print(passWord.input.num);
}
)
]
)
}
我点击按钮,但没有得到这个TextFiled,打印结果是
flutter: InputContainerInner#9818c(lifecycle state: created, no widget, not mounted)
flutter:
也许这是生命周期的问题,但我已经在小部件中做到了,会发生什么?
解决方案
完整的例子
TextEditingController completeAddressController = new TextEditingController();
TextFormField(
controller: completeAddressController,
),
获取 TextFormField 的值
字符串文本 = completeAddressController.text.toString(),