flutter - 为什么我的 TextEditingController 不起作用?
问题描述
我想要做的是我正在尝试根据用户的需要创建一个 texteditingcontroller 字段。但问题是,当我打印或尝试使用 valueitem.text
时,它显示为 null。我该如何解决?
class TextEditingModel {
TextEditingController hint = TextEditingController(text: '');
TextEditingModel ({this.hint});
TextEditingModel hintchange(){
print(hint);
return hint;
}
}
List<TextEditingModel> texteditingcontrollers = [];
RaisedButton(
child: Text('Add Controller',
onPressed: (){
setState(() {
TextEditingModel model = TextEditingModel();
texteditingcontrollers.add(model);
});
},),
for(final item in texteditingcontrollers)
TextFormField(controller: item.hintchange()),
解决方案
在它TextEditingModel
的hintchange()
返回类型上TextEditingModel
,它应该与hint
数据类型相同。同时喜欢在提示上有默认值和可选参数,比如
class TextEditingModel {
TextEditingController? hint;
TextEditingModel({this.hint});
TextEditingController hintchange() {
return hint ?? TextEditingController(text: '');
}
}
用例正在按照您的方式工作。
class Test extends StatefulWidget {
Test({Key? key}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
List<TextEditingModel> texteditingcontrollers = [];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
for (final item in texteditingcontrollers)
TextFormField(controller: item.hintchange()),
],
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
TextEditingModel model =
TextEditingModel(hint: TextEditingController(text: "Asda"));
texteditingcontrollers.add(model);
});
},
),
);
}
}
推荐阅读
- c# - asp.net MVC 活动账户
- continuous-integration - TeamCity 构建报告选项卡起始页
- php - 使用 PHP 解析 fasta 文件
- c# - 当 FocusSearch 中的下一个控件无法聚焦于 Telerik 数据表单时,应用程序崩溃
- python - 我怎样才能腌制一个类定义?
- php - 在会话 Laravel 中更改值多维数组
- c - 在 C 中搜索 int*
- javascript - toggleClass jQuery 类赋值
- android - 在滚动视图中使用寻呼机进行缩放(类似于 instagram 的功能)
- android - 弹出窗口 Recyclerview 中的 Onclick 监听器