flutter - onChange TextField 如何将数据传递到按钮的 onPressed 属性中
问题描述
我正在尝试将数据从TextField
属性onChange
传递到onPressed
按钮。
如果我输入我的字符串如下:
String newTextTitle;
然后我得到错误print(newTextTitle);
:
必须先分配不可为空的局部变量“newTextTitle”,然后才能使用它。尝试给它一个初始化表达式,或者确保在每个执行路径上都分配了它。
所以我把它改成
String? newTextTitle;
那么错误就不会再出现了。但是数据不会传递TextField
给我的按钮,实际上是通过null
.
如果我分配了一些字符串,那么它总是打印我分配的内容,而不管TextField
.
我的TextField
代码:
TextField(
autofocus: true,
textAlign: TextAlign.center,
onChanged: (newValue) {
newTextTitle = newValue;
},
),
我的button
代码:
TextButton(
onPressed: () {
print('Passing Test $newTextTitle');
},
),
我的输出控制台:
I/flutter (23788):通过测试 null
这段代码在旧的颤振中工作得很好。但现在我用了Flutter 2.5.2
,有些东西已经改变了。
解决方案
使用 aTextEditingController
是 Flutter 推荐的做你想做的事情的方法。见(https://flutter.dev/docs/cookbook/forms/text-field-changes)
// Setup your controller
final TextEditingController _controller = TextEditingController();
// Add controller to your TextField
TextField(
controller: _controller,
),
// Get the text via controller.
TextButton(
onPressed: () {
print(_controller.text);
},
child: const Text('click')
)
推荐阅读
- xml - xslt 2.0/xpath - 按属性分组相邻
- python - Keras + Tensorflow 模型优化:TypeError:clone_model() 得到了一个意外的关键字参数“clone_function”
- xcode - 导出 Xcode 构建警告
- gdb - 等效于“info locals”以十六进制转储局部变量
- php - 如何将以下内容转换为 preg_replace_callback(用于 PHP 7.3.2)
- android - Android MVVM + Databinding,以下代码是否包含对 View/Activity/Context 的引用导致泄漏?
- mysql - 如何使包含两个父表的内部连接的 sql 查询?
- c# - 方法 'UseRouting' 没有重载需要 1 个参数
- reactjs - 何时使用模板文字而不是评估 JSX
- django - 如何将参数传递给 forms.BooleanField 中的值