首页 > 解决方案 > 如何构建依赖于文本字段值的小部件?

问题描述

我想在列中添加一个 Text 小部件,该值应该是用户输入的 TextFormField 的输入值。

代码

String text;
Column(
  children: <Widget>[
    Padding(
      padding: const EdgeInsets.fromLTRB(30, 10, 30, 10),
      child: TextFormField(
        onFieldSubmitted: (value) {
          text= value;
        },
      ),
     Text(text), // want to add text here
   ]

它抛出一个错误:

必须向 Text 小部件提供非空字符串。

应该是什么好方法呢?

标签: flutterdart

解决方案


第一个使可空文本像 String? text;

根据 statefullWidget 中的提交进行更改。

 onFieldSubmitted: (value) {
            setState(() {
              text = value;
            });
          },

其次,您需要处理空值,例如

if (text != null) Text(text!),或喜欢Text(text ?? "defaul value"),

小部件会像

 String? text;

  @override
  Widget build(BuildContext context) {
    return Column(children: <Widget>[
      Padding(
        padding: const EdgeInsets.fromLTRB(30, 10, 30, 10),
        child: TextFormField(
          onFieldSubmitted: (value) {
            setState(() {
              text = value;
            });
          },
        ),
      ),
      if (text != null) Text(text!), // want to add text here
    ]);
  }

它在你的情况下解决了吗?


推荐阅读