【问题标题】:Can't show the dropdown selected value in Flutter无法在 Flutter 中显示下拉选择的值
【发布时间】:2019-02-02 10:07:07
【问题描述】:

我是 Flutter 开发的新手,我正在尝试显示下拉列表的选定值,但我无法让它工作。

您可以选择一个孩子,它运行良好,但下拉菜单不会将其显示为已选择的孩子,它就像没有选择任何内容一样。

这是我的代码:

import 'package:app2date/repository/repository.dart';
import 'package:app2date/model/FeedSource.dart';
import 'package:app2date/model/FeedCategory.dart';
import 'package:app2date/util/ui.dart';
import 'package:flutter/material.dart';

class ManageFeedSource extends StatefulWidget {
  ManageFeedSource({Key key, this.feedSource}) : super(key: key);

  final FeedSource feedSource;

  @override
  _ManageFeedSource createState() => new _ManageFeedSource();
}

class _ManageFeedSource extends State<ManageFeedSource> {
  final tfNameController = new TextEditingController();
  final tfUrlController = new TextEditingController();
  var editMode = false;
  FeedCategory _feedCategory;

  @override
  Widget build(BuildContext context) {
    FeedSource feedSource = widget.feedSource;
    if (feedSource != null) {
      tfNameController.text = feedSource.name;
      tfUrlController.text = feedSource.url;
      editMode = true;
    }
    return Scaffold(
      appBar: AppBar(
        title: Text('New Feed'),
      ),
      body: new FutureBuilder(
        future: Repository.get().getFeedCategories(),
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          List<FeedCategory> categoriesList = snapshot.data;
          if (categoriesList != null) {
            if (categoriesList.isNotEmpty) {
                _feedCategory = categoriesList[0];      // The dropdown doesn’t draw the element (the list has elements)
            }
            print("${_feedCategory}");
            return new Padding(
              padding: EdgeInsets.all(12.0),
              child: new Column(
                mainAxisAlignment: MainAxisAlignment.start,
                children: <Widget>[
                  new DropdownButton<FeedCategory>(
                    hint: Text("Select Category"),
                    items: categoriesList.map((FeedCategory category) {
                      return new DropdownMenuItem<FeedCategory>(
                        value: _feedCategory,
                        child: Text(_feedCategory.name),
                      );
                    }).toList(),
                    onChanged: (FeedCategory category) {
                      setState(() {
                        _feedCategory = category;      // Problem here too, the element doesn’t show in the dropdown as selected
                        print("Selected: ${_feedCategory.name} (${_feedCategory.id})");
                      });
                    },
                  ),
                ],
              ),
            ),
          ],
          ),
          );
          } else {
          return Container(
          decoration: new BoxDecoration(color: Colors.white),
          );
          }
        },
      ),
    );
  }

  @override
  void initState() {
    super.initState();
  }
}

非常感谢任何帮助。

【问题讨论】:

    标签: dart flutter dropdown selected


    【解决方案1】:

    检查DropdownButton 类,有一个名为value 的属性,在那个地方使用你的变量_feedCategory,并在你的DropdownMenuItem 映射上而不是_feedCategory 使用类别:

       new DropdownButton<FeedCategory>(
                          value: _feedCategory,
                          hint: Text("Select Category"),
                          items: categoriesList.map((FeedCategory category) {
                            return new DropdownMenuItem<FeedCategory>(
                              value: category,
                              child: Text(category.name),
                            );
                          }).toList(),
                          onChanged: (FeedCategory category) {
                            setState(() {
                              _feedCategory = category;      // Problem here too, the element doesn’t show in the dropdown as selected
                              print("Selected: ${_feedCategory.name} (${_feedCategory.id})");
                            });
                          },
                        ),
    

    【讨论】:

    • 天啊,我现在觉得好傻!哈哈。就这样!我会修改你的建议,非常感谢。它不允许我现在将其设置为接受的答案,我会稍后再做。
    • 这实际上无法在底部工作表对话框中工作。当您在底部工作表中有下拉菜单时,除非您重新打开底部工作表,否则所选值不会更新。
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 2020-01-24
    • 2020-01-03
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多