将可编辑文本置于Flutter的TextField小部件内

时间:2019-02-09 21:15:20

标签: flutter google-cloud-firestore

因此,我的应用程序中有此部分,我想在其中更新用户给出的项目的描述。该描述已经存在于Firestore中,现在我想检索它并将其显示在 Textfield 窗口小部件中,因此,如果用户只想更改描述中的单词,他/她不会不必再次写完整的描述。

更改 TextEditingController 的text属性也无济于事。

2 个答案:

答案 0 :(得分:0)

TextEditingController可以满足您的需求!

此代码可以正常运行,我已经对其进行了测试:

final textController = TextEditingController(text: 'some initial text');
return  new TextField(controller: textController);

它也应该与Firestore一起使用。从Firestore获取信息后,只需使用TextField重建小部件即可。

祝你好运!

答案 1 :(得分:0)

这就是我解决这个问题的方法。...

我从Firestore中检索了 title 值,然后将其发送到下一个活动中,在该活动中我将对其进行更新...

find ../music/artist/ -type f -name "*.ogg" -exec bash -c 'mydir=`dirname {}`;mv {} $mydir/music.ogg' \;

现在,我们将在活动中(通过构造函数)接收 titles 值(通过构造函数)...

var route = new MaterialPageRoute(builder: (BuildContext context) => new updateTitleAndDescription(
                                  mTitle: '${title}',
                                  mDescription:'${description}',
                                  userID:'${userid}',
                                  titleID: '${id}',
                                ));

                                Navigator.of(context).push(route);

现在是与class updateTitleAndDescription extends StatefulWidget{ final String mTitle,mDescription,userID,titleID; updateTitleAndDescription ({Key key, this.mTitle, this.mDescription, this.userID, this.titleID}) : super(key: key); @override State<StatefulWidget> createState() { return new updateTitleAndDescriptionState(); } } 一起工作的非常重要且至关重要的部分,它为您的TextEditingController提供了可编辑的文本,即您的上一个标题

为此,我首先要做的是在TextField中声明TextEditingController

在这里。

class updateTitleAndDescriptionState extends State<updateTitleAndDescription>

现在为您的class updateTitleAndDescriptionState extends State<updateTitleAndDescription> { TextEditingController t; TextEditingController d; ..................... .................. .............. 制作一个Widget,在这里我实际上用之前在构造函数中收到的标题初始化了TextField

TextEditingController

然后使用Widget titleText(){ t = new TextEditingController(text: '${widget.mTitle}'); return Container( margin: EdgeInsets.all(20.0), child: new TextField( controller: t, decoration: InputDecoration( border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0) ), helperText: "Try to write it within 150 characters", helperStyle: TextStyle( fontStyle: FontStyle.italic ), ), keyboardType: TextInputType.multiline, maxLength: 150, maxLines: null, textAlign: TextAlign.left, ), ); } ...

中的此小部件

注意:-我只回答了我们需要在文本字段中放入上一个文本的可编辑文本的部分。