Flutter 在TextFormField和InputEdition中显示实际值

Flutter 在TextFormField和InputEdition中显示实际值,flutter,Flutter,有没有办法简单地将hintText转换为实际值?我从另一个类(上一个屏幕,用户在其中输入给定值)获取${widget.message},然后希望对其进行硬编码。我尝试在TextFormField中使用initialValue,但无法使其工作 在控制器前面写入initialValue:${widget.message}时,我得到“失败的断言:第196行位置15:'initialValue==null | | controller==null”:不是真的。” 创建一个TextEditingContr

有没有办法简单地将hintText转换为实际值?我从另一个类(上一个屏幕,用户在其中输入给定值)获取${widget.message},然后希望对其进行硬编码。我尝试在TextFormField中使用initialValue,但无法使其工作

在控制器前面写入initialValue:${widget.message}时,我得到“失败的断言:第196行位置15:'initialValue==null | | controller==null”:不是真的。”


创建一个
TextEditingController
并在
initState
中向其提供
'${widget.message}'
值,然后通过设置属性
enabled:false来禁用TextFormField

例如:

class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key key, this.message}) : super(key: key);
  final String message;

  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  final text = TextEditingController();

  @override
  void initState() {
    super.initState();
    text.text = '${widget.message}'; //provide the controller the recived value in initState
  }

  @override
  void dispose() {
    text.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child: TextFormField(
            controller: text,
            enabled: false, //Set it to false so they can't further change it
            decoration: InputDecoration(
              border: OutlineInputBorder(),
            ),
          ),
        ),
      ),
    );
  }
}

类MyStatefulWidget扩展StatefulWidget{
constmystatefulwidget({Key-Key,this.message}):super(Key:Key);
最终字符串消息;
@凌驾
_MyStatefulWidgetState createState()=>\u MyStatefulWidgetState();
}
类_MyStatefulWidgetState扩展状态{
最终文本=文本编辑控制器();
@凌驾
void initState(){
super.initState();
text.text='${widget.message}';//在initState中向控制器提供接收到的值
}
@凌驾
无效处置(){
text.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
儿童:中心(
子项:TextFormField(
控制器:文本,
enabled:false,//将其设置为false,以便他们无法进一步更改它
装饰:输入装饰(
边框:OutlineInputBorder(),
),
),
),
),
);
}
}

没有控制器:,如果您已经有了控制器,只需使用其属性I需要控制器,因为它会进一步发送数据。已尝试TextEditingController nameController=TextEditingController(文本:${widget.message}”),但也不起作用。我按照上面的例子做了。
class MyStatefulWidget extends StatefulWidget {
  const MyStatefulWidget({Key key, this.message}) : super(key: key);
  final String message;

  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  final text = TextEditingController();

  @override
  void initState() {
    super.initState();
    text.text = '${widget.message}'; //provide the controller the recived value in initState
  }

  @override
  void dispose() {
    text.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child: TextFormField(
            controller: text,
            enabled: false, //Set it to false so they can't further change it
            decoration: InputDecoration(
              border: OutlineInputBorder(),
            ),
          ),
        ),
      ),
    );
  }
}