68538


ダイアログを選択することはできるのだが、そのあとTextfieldに表示することができません。

試したコード

[code]

    class Dialog extends StatefulWidget {
      @override
      _PickerState createState() => _PickerState();
    }
    
    class _PickerState extends State<Dialog> {
    
      String _label = '';
      TextEditingController _textEditingController;
    
      void _setLabel(String s) {
        if (s == null) {
          return;
        }
        setState(() => _label = s);
      }
    
      Future _showSimpleDialog() async {
        String result = "";
        result = await showDialog(
          barrierDismissible: true,
          context: context,
          builder: (BuildContext context) {
            return SimpleDialog(
              title: Text('選択してください'),
              children: <Widget>[
                SimpleDialogOption(
                  child: ListTile(
                    title: Text('一大学'),
                  ),
                  onPressed: () {
                    Navigator.pop(
                      context,
                      "一般大学",
                    );
                  },
                ),
                SimpleDialogOption(
                  child: ListTile(
                    title: Text('2大学'),
                  ),
                  onPressed: () {
                    Navigator.pop(
                      context,
                      "2大学",
                    );
                  },
                ),
                SimpleDialogOption(
                  child: ListTile(
                    title: Text('3大学'),
                  ),
                  onPressed: () {
                    Navigator.pop(
                      context,
                      "3大学",
                    );
                  },
                ),
              ],
            );
          },
        );
        _setLabel(result);
      }
    
      @override
      Widget build(BuildContext context) {
        return Container(
          child: TextField(
            controller: _textEditingController,
            decoration: InputDecoration(
              labelText: '大学',
              hintText: '大学',
              icon: Icon(Icons.school),
            ),
            onTap: _showSimpleDialog,
            onChanged: (value){
              setState(() {
                _label = value;
              });
            },
          ),
        );
      }
    }
    
    
[/code]


CC BY-SA 4.0
2020-07-12T09:39:25.643
68520
2020-07-13T03:42:53.280
36055
question
ios android flutter dart
textfieldをtapしてDialogを表示し、選択したものをtextfieldに表示したい


`TextEditingController`を使用して、文字列を設定してみてください。

[code]

    class _PickerState extends State<Dialog> {
      String _label = '';
      TextEditingController _textEditingController;
    
      // 追加
      @override
      void initState() {
        super.initState();
        _textEditingController = TextEditingController();
      }
    
      void _setLabel(String s) {
        if (s == null) {
          return;
        }
        setState(() => _label = s);
        _textEditingController.text = s; // 追加
      }
    ～略～
    
[/code]


CC BY-SA 4.0
2020-07-13T03:42:53.280
68538
2020-07-13T03:42:53.280
40046
68520
answer