Flatter Как избавиться от default fillColor для первого элемента DropdownButton - PullRequest
1 голос
/ 17 января 2020

Вопрос: title

Итак, у меня есть кнопка Dropdown

enter image description here

А вот DropdownMenuItem

enter image description here

Как видите, первый элемент имеет серый цвет на заднем плане. Так как это убрать?

Чтобы быть более понятным, вот чего я хочу достичь

enter image description here

Фрагмент Navbar :

class Navbar extends StatefulWidget {
  @override
  _NavbarState createState() => _NavbarState();
}

class _NavbarState extends State<Navbar> {
  action() {
    print('test');
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      height: 100,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          NavbarLogo(),
          Row(
            mainAxisSize: MainAxisSize.min,
            children: <Widget>[
              NavbarItem(
                title: 'welcome',
                navigationPath: RouterDashboardView.welcomeView,
              ),
              SizedBox(width: 50.0),
              NavbarItemDropdown(
                items: ['labelExitLabel', 'labelExitLabel', 'actionExitAction'],
                functions: [action],
              ),
            ],
          ),
        ],
      ),
    );
  }
}

Ничего особенного, только содержит lo go, текст и выпадающий список

Фрагмент NavbarDropdown:

class NavbarItemDropdown extends StatefulWidget {
  final List<String> items;
  final List<Function> functions;

  const NavbarItemDropdown({
    Key key,
    @required this.items,
    this.functions,
  }) : super(key: key);

  @override
  _NavbarItemDropdownState createState() => _NavbarItemDropdownState();
}

class _NavbarItemDropdownState extends State<NavbarItemDropdown> {
  @override
  Widget build(BuildContext context) {
    return DropdownButtonHideUnderline(
      child: DropdownButton(
        items: widget.items.map((String _value) {
          return DropdownMenuItem<String>(
            value: _value,
            child: _value.contains('label')
                ? Text(
                    '${_value.split('label')[1]}',
                    style: TextStyle(fontSize: 13.0),
                  )
                : Text('${_value.split('action')[1]}'),
          );
        }).toList(),
        onChanged: (String _value) {
          if (_value.contains('action')) widget.functions[0]();
        },
        hint: Text('TestDropDown'),
      ),
    );
  }
}
...