【发布时间】:2021-10-28 03:26:00
【问题描述】:
我有两个简单的 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 -
【问题讨论】: