json - flutter 文本编辑 Controller listview.builder

标签 json flutter dart flutter-listview texteditingcontroller

我希望页面显示社交媒体应用程序列表,用户可以在其中输入他们的用户名/详细信息。我希望能够提取此输入数据以及应用程序名称和 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/

相关文章:

json - 在 Data::Dumper 中是否有等效于 Perls 的 Dumper() 方法的 Go 语言?

javascript - 如何使用 D3 将 JSON 数据更改为 Javascript 对象数组

flutter - 如何使下拉菜单 flutter

dart - 如何使用 Dart 的 LevelDB?

web-applications - Dart一页应用程序:不使用AngularDart进行路由

node.js - GAE 中 Node JS 项目中的 HTTP 413 请求实体太大

firebase - 实现下拉刷新

flutter - 为什么静态字段无法通过实例访问

dart - Flutter如何将多个文件发送到http post

python - pandas Dataframe 到 JSON 字典列表