2

簡単なものが欠けていると思いますが、考えられるすべての解決策を何日も試してきました。listview.builder でドロップダウンの選択をどのように処理しますか? ドロップダウン ボタンの値を List-String- に保存することは可能ですか?

XML テンプレートに基づいて動的フォームを作成しており、ドロップダウン、チェックボックス、入力などがあります。編集:ページの読み込み時に XML が解析されるまで、どのウィジェットが必要かわかりません。したがって、動的に作成されたウィジェットのリストを Listview.builder に渡そうとします。

以下のコードは、更新に失敗する基本的な例です。

ここでアドバイスをいただければ幸いです。

import 'package:flutter/material.dart';

class FormEG extends StatefulWidget {
  @override
  _FormEGState createState() => new _FormEGState();
}

class _FormEGState extends State<FormEG> {
  List<String> _listValues;
  List<DropdownMenuItem<String>> _items;
  List<Widget> _widgets;

  @override
  void initState() {
    _listValues = new List<String>();
    _listValues.add("b");

    _items = new List<DropdownMenuItem<String>>();
    _items.add(new DropdownMenuItem(child: Text("a"), value: "a"));
    _items.add(new DropdownMenuItem(child: Text("b"), value: "b"));
    _items.add(new DropdownMenuItem(child: Text("c"), value: "c"));
    _items.add(new DropdownMenuItem(child: Text("d"), value: "d"));

    _widgets = new List<Widget>();
    _widgets.add(new DropdownButton<String>(
      value: _listValues[0],
      items: _items,
      onChanged: (String newValue) {
        setState(() {
          _listValues[0] = newValue;
        });
      },
    ));
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        body: new ListView.builder(
          itemCount: _widgets.length,
          itemBuilder: (context, index) {
          return _widgets[index];
          },
        ));
      }
  }
4

3 に答える 3