如何在 Flutter 中将 TextEditingController 转换为 String?
Posted
技术标签:
【中文标题】如何在 Flutter 中将 TextEditingController 转换为 String?【英文标题】:How can I cast TextEditingController to String in Flutter? 【发布时间】:2020-12-18 09:41:33 【问题描述】:我正在从 Firestore 中检索一些数据,如下所示:
String _fName;
Future<dynamic>_retrieveData() async
var firebaseUser = await FirebaseAuth.instance.currentUser();
await Firestore.instance.collection("tryingdata").document(firebaseUser.uid).snapshots().listen((DocumentSnapshot doc) async
Map<String, dynamic> document = doc.data;
setState(()
_fName = document['firstName'];
);
print(_fName);
);
@override
void initState()
// TODO: implement initState
super.initState();
_retrieveData();
我想在我的 TextFormField 中有一个 initialValue,但我必须使用控制器而不是 initialValue,但控制器必须是 TextEditingController 变量。但我从数据库中检索字符串。我希望数据库中的值作为初始值显示在 TextFormField 中。 我收到以下错误:错误:无法将参数类型“String”分配给参数类型“TextEditingController”。
TextFormField(
controller: _fName,
textAlign: TextAlign.left,
),
感谢您的帮助!
【问题讨论】:
【参考方案1】:创建你的控制器:
var controller = TextEditingController();
然后一旦你得到字符串,就做
setState(() => controller.text = _fName);
【讨论】:
我的 StringValue 是 _fName ,它是从数据库中检索的,但我不能做 var controller = TextEditingController(text: _fName);它告诉我无法在初始化程序中访问实例成员“_fName”。【参考方案2】:TextEditingController controller = TextEditingController();
您可以在使用文本设置器创建 TextEditingController 对象后对其进行修改,如下所示:
controller.text = "my initial value";
你必须使用 set state 来查看变化
【讨论】:
我可以分配“一些字符串”,它工作正常,但我想分配从我的数据库中检索的 _fName 作为字符串。当我做 var controller = TextEditingController(text: _fName);它告诉我无法在初始化程序中访问实例成员“_fName”。以上是关于如何在 Flutter 中将 TextEditingController 转换为 String?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中将 AlertDialog FlatButton 居中
如何在 Flutter 中将地图列表显示到 DropdownMenuItem 中