android - 为什么我要把 Flutter 中的字符串设为空?
问题描述
我对一件简单的事情有疑问,但我不知道它是如何在代码中发生的。下面是代码:
Widget build(BuildContext context) {
String newTaskTitle;
return Container(
color: Color(0xff757575),
child: Container(
padding: EdgeInsets.all(20.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(20.0),
topRight: Radius.circular(20.0),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Text(
'Add Task',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 30.0,
color: Colors.lightBlueAccent,
),
),
TextField(
autofocus: true,
textAlign: TextAlign.center,
onChanged: (newText) {
newTaskTitle = newText;
},
),
FlatButton(
child: Text(
'Add',
style: TextStyle(
color: Colors.white,
),
),
color: Colors.lightBlueAccent,
onPressed: () {
print(newTaskTitle);
},
),
],
),
),
);
}
解决方案
您已经在 build() 方法中定义 了String newTaskTitle尝试从 build 方法中删除它并尝试在 StatefulWidget 中定义它。
发生这种情况是因为每次更改文本时,更改方法上的 TextField 都会调用 build() 方法
推荐阅读
- cassandra - 相当于 cassandra 中 SELECT 的批处理语句
- javascript - 纯渲染和按钮 onClick 内联 setStates
- kubernetes - 在 Git 存储库中验证 K8s YAML 文件
- java - 使用 Java Streams 根据条件从对象将值设置为字符串变量
- sql - 查询以获取所有兄弟姐妹
- coq - 如何在 Coq 中证明 a*b*c=a*(b*c)?
- javascript - 使用reduce获取带有对象的对象
- spring - Spring Boot - Firebase 云存储配置和 CRUD 操作
- swiftui - 后台任务完成后 NavigationLink deinit ObservedObject
- c# - 使用 Graph Client C# 在 Azure AD 中的另一个安全组中添加一个安全组