我有兩個簡單的 TextField 小部件和一個包含提交按鈕的自定義“PublishAction”頁面。
child: Column(
children: [
TextField(
decoration: const InputDecoration(labelText: "Topic"),
),
TextField(
decoration: const InputDecoration(labelText: "Context"),
),
PublishAction(
topic: "flutter/topic",
message: "Hello World",
),
],
),
我嘗試使用 TextEditingController 來處理文本,將值傳遞給自定義的“PublishAction”,如下所示
final _topicController = TextEditingController();
final _messageController = TextEditingController();
child: Column(
children: [
TextField(
controller: _topicController,
decoration: const InputDecoration(labelText: "Topic"),
),
TextField(
controller: _messageController,
decoration: const InputDecoration(labelText: "Context"),
),
PublishAction(
topic: _topicController.text,
message: _messageController.text,
),
],
),
但是在我的 PublishAction 頁面中,列印出來后,我發現兩個值都是空的
我試過這樣的東西,但效果很好
child: Column(
children: [
TextField(
controller: _topicController,
decoration: const InputDecoration(labelText: "Topic"),
onchange: () {
print(_topicController.text);
}
),
],
),
將 TextEditingController.text 作為函式引數傳遞時如何不獲取空值?
編輯:
這是 PublishAction 的樣子:
class PublishAction extends StatelessWidget {
final String topic;
final String message;
const PublishAction({
Key? key,
required this.topic,
required this.message,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return FloatingActionButton(
child: const Icon(Icons.send),
onPressed: () {
print("topic - $topic, message - $message");
});
}
}
和輸出:
topic - , message -
uj5u.com熱心網友回復:
在這段代碼中,你給final值''或給了值Empty,TextEditingController()所以它不能被改變,所以你必須執行以下操作,它應該可以作業,
TextEditingController _topicController = TextEditingController();
TextEditingController _messageController = TextEditingController();
child: Column(
children: [
TextField(
controller: _topicController,
decoration: const InputDecoration(labelText: "Topic"),
),
TextField(
controller: _messageController,
decoration: const InputDecoration(labelText: "Context"),
),
PublishAction(
topic: _topicController.text,
message: _messageController.text,
),
],
),
uj5u.com熱心網友回復:
為此,您必須使用如下所示的 onChanged() 方法->
onChanged: (val) {
setState(() {
_topicController.text = val.toString();
});
},
試試這個它會幫助你,讓我知道任何問題? 有關更多詳細資訊,您可以查看此內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339509.html
