首页 > 解决方案 > 如何在小部件之外获取 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:

也许这是生命周期的问题,但我已经在小部件中做到了,会发生什么?

标签: flutterdart

解决方案


完整的例子

TextEditingController completeAddressController = new TextEditingController();

TextFormField(
          controller: completeAddressController,
          ),

获取 TextFormField 的值

字符串文本 = completeAddressController.text.toString(),


推荐阅读