Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 有很多输入字段的颤振网格-有智能方法吗?_Flutter_Dart_Grid - Fatal编程技术网

Flutter 有很多输入字段的颤振网格-有智能方法吗?

Flutter 有很多输入字段的颤振网格-有智能方法吗?,flutter,dart,grid,Flutter,Dart,Grid,我在这件事上疯了 我构建了一个包含多个输入字段的网格,它可以工作,但是代码以一种可怕的方式重复,我似乎找不到解决方案 正如您在图像上看到的,我已经有45个输入字段加上带有名称的字段。 因为我需要所有这些文本字段的输入,所以我硬编码了这个网格中的每一项 var erdbeerenABController = TextEditingController(); var erdbeeren13UhrController = TextEditingController(); var erdb

我在这件事上疯了

我构建了一个包含多个输入字段的网格,它可以工作,但是代码以一种可怕的方式重复,我似乎找不到解决方案

正如您在图像上看到的,我已经有45个输入字段加上带有名称的字段。 因为我需要所有这些文本字段的输入,所以我硬编码了这个网格中的每一项

  var erdbeerenABController = TextEditingController();
  var erdbeeren13UhrController = TextEditingController();
  var erdbeeren15UhrController = TextEditingController();
  var erdbeeren17UhrController = TextEditingController();
  var erdbeerenEBController = TextEditingController();

  var erdbeerenGesternABController = TextEditingController();
  var erdbeerenGestern13UhrController = TextEditingController();
  var erdbeerenGestern15UhrController = TextEditingController();
  var erdbeerenGestern17UhrController = TextEditingController();
  var erdbeerenGesternEBController = TextEditingController();

  ...


          Container(
        height: 400,
        padding: EdgeInsets.only(bottom: 30),
        child: GridView.count(
          padding: const EdgeInsets.all(10),
          crossAxisSpacing: 10,
          mainAxisSpacing: 10,
          crossAxisCount: 6,
          children: <Widget>[
            Container(
              padding: const EdgeInsets.all(8),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('AB'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('13 Uhr'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('15 Uhr'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('17 Uhr'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('EB'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('Erd'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeerenABController),
              color: Colors.blue[200],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeeren13UhrController),
              color: Colors.blue[300],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeeren15UhrController),
              color: Colors.blue[400],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeeren17UhrController),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeerenEBController),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: const Text('Erd G'),
              color: Colors.blue[500],
            ),
            Container(
              padding: const EdgeInsets.all(8),
              child: TextField(controller: erdbeerenGesternABController),
              color: Colors.blue[200],
            ),


  ...
var erdbeerenABController=TextEditingController();
var erdbeeren13UhrController=TextEditingController();
var erdbeeren15UhrController=TextEditingController();
var erdbeeren17UhrController=TextEditingController();
var erdbeerenEBController=TextEditingController();
var erdbeerenGesternABController=TextEditingController();
var erdbeerenGestern13UhrController=TextEditingController();
var erdbeerenGestern15UhrController=TextEditingController();
var erdbeerenGestern17UhrController=TextEditingController();
var erdbeerengesternbcontroller=TextEditingController();
...
容器(
身高:400,
填充:仅限边缘设置(底部:30),
子项:GridView.count(
填充:常量边集。全部(10),
横轴间距:10,
平均间距:10,
交叉轴计数:6,
儿童:[
容器(
填充:常量边集。全部(8),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:常量文本('AB'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子:常量文本('13 Uhr'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:常量文本('15 Uhr'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子:常量文本('17 Uhr'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:常量文本('EB'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:常量文本('Erd'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:TextField(控制器:erdbeerenABController),
颜色:颜色。蓝色[200],
),
容器(
填充:常量边集。全部(8),
子项:文本字段(控制器:erdbeeren13UhrController),
颜色:颜色。蓝色[300],
),
容器(
填充:常量边集。全部(8),
子项:TextField(控制器:Erdbeeren15UHR控制器),
颜色:颜色。蓝色[400],
),
容器(
填充:常量边集。全部(8),
子项:TextField(控制器:erdbeeren17UhrController),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:TextField(控制器:erdbeerenEBController),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:常量文本('Erd G'),
颜色:颜色。蓝色[500],
),
容器(
填充:常量边集。全部(8),
子项:TextField(控制器:erdbeerengesternbcontroller),
颜色:颜色。蓝色[200],
),
...

是否有必要以干净的代码方式构建此网格?如果我使用不同的方法,我不知道如何跟踪所有的输入字段,但这感觉非常错误。

从官方的flifter文档中尝试以下内容:

或者有几种选择:

GridView.count(...)

GridView.count(
  crossAxisCount: 2,
  children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
  ],
)
GridView.extent(…)
GridView.extent(
maxCrossAxisExtent:400,
儿童:[
徽标(),
徽标(),
徽标(),
徽标(),
],
)

举个例子。我不是根据你的情况做的,但它也应该适合你。

使用这个pin码文本字段包

指定maxLength=5以在行中创建5个字段。
这真的很有帮助,可以将TextEditingController()减少到9,使用装饰来填充每个字段的颜色,而不是容器。

我知道这些存在,但我不知道如何实现它们,同时仍然跟踪inputfields中的输入。你能帮我吗?
GridView.builder(...)

GridView.builder(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  itemBuilder: (_, index) => FlutterLogo(),
  itemCount: 4,
)
GridView(...)

GridView(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
  ],
)
GridView.custom(...)

GridView.custom(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2),
  childrenDelegate: SliverChildListDelegate(
    [
      FlutterLogo(),
      FlutterLogo(),
      FlutterLogo(),
      FlutterLogo(),
    ],
  ),
)
GridView.extent(...)

GridView.extent(
  maxCrossAxisExtent: 400,
  children: <Widget>[
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
    FlutterLogo(),
  ],
)