我希望页面显示社交媒体应用程序列表,用户可以在其中输入他们的用户名/详细信息。我希望能够提取此输入数据以及应用程序名称和 Logo (最好作为 JSON 文件),以便能够将它们创建到通向相应应用程序和配置文件的按钮中。
为此,我使用 listview.builder 创建了一个列表图 block 列表(来自一个单独的列表,其中包含我想要包含的应用程序和 Logo 列表),并使用副标题向每个列表图 block 添加了一个 TextField功能。
请您帮我将文本编辑 Controller 添加到列表的每个项目中,并提取包含文本输入、应用程序名称和 Logo 的文件。
请注意:应用程序列表是一个列表,其中包含应用程序名称、TextField 的提示文本和 Logo 图像。
import 'package:flutter/material.dart';
import 'package:applist/apps.dart';
class AppList extends StatefulWidget {
const AppList({Key? key}) : super(key: key);
@override
_AppListState createState() => _AppListState();
}
class _AppListState extends State<AppList> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My list of apps'),
),
body: Padding(
padding: EdgeInsets.all(20.0),
child: Column(
children: [
Expanded(
child: ListView.builder(
itemCount: apps.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(apps[index].appname),
leading: SizedBox(
height: 50,
width: 50,
child: Image.asset(apps[index].image),
),
subtitle: TextField(
decoration:
InputDecoration(hintText: (apps[index].hint)),
),
);
}))
],
),
),
);
}
}
最佳答案
1-您需要定义TextEditingConrtoller
字段变量:
late TextEditingController textEditingController ;
2-在initState
中初始化字段变量
@override
void initState(){
super.initState();
textEditingController = TextEditingController();
}
3- 然后初始化您的 TextField
Controller
TextField(
controller:textEditingController ,
)
- 你的最终代码应该是这样的
import 'package:flutter/material.dart';
import 'package:applist/apps.dart';
class AppList extends StatefulWidget {
const AppList({Key? key}) : super(key: key);
@override
_AppListState createState() => _AppListState();
}
class _AppListState extends State<AppList> {
late TextEditingController textEditingController ; // <--
@override
void initState() {
super.initState();
textEditingController = TextEditingController(); // <--
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My list of apps'),
),
body: Padding(
padding: EdgeInsets.all(20.0),
child: Column(
children: [
Expanded(
child: ListView.builder(
itemCount: apps.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(apps[index].appname),
leading: SizedBox(
height: 50,
width: 50,
child: Image.asset(apps[index].image),
),
subtitle: TextField(
controller:textEditingController , // <--
decoration:
InputDecoration(hintText: (apps[index].hint)),
),
);
}))
],
),
),
);
}
}
关于json - flutter 文本编辑 Controller listview.builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68305886/