Flutter 按下按钮后,使文本可编辑

Flutter 按下按钮后,使文本可编辑,flutter,flutter-layout,textfield,Flutter,Flutter Layout,Textfield,有人知道我按下按钮后如何使文本可编辑吗?我希望它只有在用户单击按钮时才可编辑。下面是我需要的结果 如果我想编辑文本“节日假期”,那么我需要单击编辑按钮。我认为这应该满足您的要求 TextEditingController _controller = TextEditingController(text: "Festive Leave"); bool _isEnable = false; //These are initialize at the top Row(

有人知道我按下按钮后如何使文本可编辑吗?我希望它只有在用户单击按钮时才可编辑。下面是我需要的结果


如果我想编辑文本“节日假期”,那么我需要单击编辑按钮。

我认为这应该满足您的要求

TextEditingController _controller =
      TextEditingController(text: "Festive Leave");
  bool _isEnable = false;
//These are initialize at the top


Row(
            children: <Widget>[
              Container(
                width: 100,
                child: TextField(
                  controller: _controller,
                  enabled: _isEnable,
                ),
              ),
              IconButton(
                  icon: Icon(Icons.edit),
                  onPressed: () {
                    setState(() {
                      _isEnable = true;
                    });
                  })
            ],
          ),
TextEditingController\u控制器=
文本编辑控制器(文本:“节日假期”);
bool _isEnable=false;
//这些在顶部初始化
划船(
儿童:[
容器(
宽度:100,
孩子:TextField(
控制器:_控制器,
已启用:_isEnable,
),
),
图标按钮(
图标:图标(Icons.edit),
已按下:(){
设置状态(){
_isEnable=正确;
});
})
],
),

我想这会对你有所帮助

class SampleDemo extends StatefulWidget {
  @override
  _SampleDemoState createState() => _SampleDemoState();
}

class _SampleDemoState extends State<SampleDemo> {
  String title = "MyTitle";
  bool isEditable=false;

  @override
  Widget build(BuildContext context) {
    return Row(children: [
      Expanded(
          child: !isEditable
              ? Text(title)
              : TextFormField(
                  initialValue: title,
                  textInputAction: TextInputAction.done,
                  onFieldSubmitted: (value) {
                    setState(() => {isEditable = false, title = value});
                  })),
      IconButton(
        icon: Icon(Icons.edit),
        onPressed: () {
          setState(() => {
                isEditable = true,
              });
        },
      )
    ]);
  }
}
class SampleDemo扩展StatefulWidget{
@凌驾
_SampleDemoState createState();
}
类_SampleDemoState扩展状态{
字符串title=“MyTitle”;
bool isEditable=false;
@凌驾
小部件构建(构建上下文){
返回行(子项:[
扩大(
孩子:!可编辑
?文本(标题)
:TextFormField(
初始值:title,
textInputAction:textInputAction.done,
onFieldSubmitted:(值){
setState(()=>{isEditable=false,title=value});
})),
图标按钮(
图标:图标(Icons.edit),
已按下:(){
设置状态(()=>{
isEditable=true,
});
},
)
]);
}
}
行(
儿童:[
容器(
宽度:100,
孩子:TextField(
装饰:输入装饰(
hintText:“节日假期”,
hintStyle:TextStyle(颜色:Colors.black),
),
已启用:_isEnable,
),
),
图标按钮(
图标:图标(Icons.edit),
已按下:(){
设置状态(){
_isEnable=正确;
});
})
],
),

您的选择这一个文本将消失,一旦用户开始键入,虽然这是您初始化文本字段的方式,但我将在下面提供一些代码,这些代码将有稍微不同的效果,但不使用控制器,您可以选择您想要了解的内容,谢谢很多人,这对我帮助很大,您太棒了!!
Row(
            children: <Widget>[
              Container(
                width: 100,
                child: TextField(
              decoration: InputDecoration(
                hintText: "Festive Leave",
                hintStyle: TextStyle(color: Colors.black),
              ),
              enabled: _isEnable,
            ),
              ),
              IconButton(
                  icon: Icon(Icons.edit),
                  onPressed: () {
                    setState(() {
                      _isEnable = true;
                    });
                  })
            ],
          ),