繁体   English   中英

在 flutter 中制作 CheckBoxListTile 的 DropDownButton

[英]Making a DropDownButton of CheckBoxListTile in flutter

我想制作一些 DropdownButtons 来过滤数据以显示特定结果。 我制作了 DropdownButton 并将项目作为 DropdownMenuItem 插入,它的子项是 CheckboxListTile ..

但不幸的是它告诉我这个错误

There should be exactly one item with [DropdownButton]'s value: checked. 
Either zero or 2 or more [DropdownMenuItem]s were detected with the same value
'package:flutter/src/material/dropdown.dart':
Failed assertion: line 882 pos 15: 'items == null || items.isEmpty || value == null ||
              items.where((DropdownMenuItem<T> item) {
                return item.value == value;
              }).length == 1'

这是我的代码:

import 'package:flutter/material.dart';

class SendingMessages extends StatefulWidget {
  const SendingMessages({Key? key}) : super(key: key);

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

class _SendingMessagesState extends State<SendingMessages> {
  String checkBoxDropped = 'Azaz';
  bool isChecked = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'إرسال إشعارات',
          style: TextStyle(fontSize: 24.0),
        ),
        centerTitle: true,
      ),
      body: ListView(
        children: [
          Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Padding(padding: EdgeInsets.only(top: 20.0)),
              Container(
                child: Center(
                  child: DropdownButton<String>(
                    icon: const Icon(Icons.arrow_circle_down_sharp),
                    items: [
                      DropdownMenuItem(
                        child: CheckboxListTile(
                          value: isChecked,
                          onChanged: (newValue) {
                            isChecked = newValue!;
                          },
                        ),
                        value: 'Azaz',
                      ),
                      DropdownMenuItem(
                        child: CheckboxListTile(
                          value: isChecked,
                          onChanged: (newValue) {
                            isChecked = newValue!;
                          },
                        ),
                        value: 'Sarmada',
                      ),
                    ],
                    value: checkBoxDropped,
                    onChanged: (value) {
                      setState(() {
                        checkBoxDropped = value!;
                      });
                    },
                  ),
                ),
              ),
            ],
          ),
        ],
      ),
    );
  }
}

所以.. 有没有办法解决这个问题,或者有什么可以帮助具有多种选择选项的 DropDownButton?

给你!,这应该可以解决问题,

class SendingMessages extends StatefulWidget {
  const SendingMessages({Key? key}) : super(key: key);

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

class _SendingMessagesState extends State<SendingMessages> {
  List<String> items = ['Azaz', 'Sarmada'];
  String? _selectedItem;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(
            'إرسال إشعارات',
            style: TextStyle(fontSize: 24.0),
          ),
          centerTitle: true,
        ),
        body: ListView(children: [
          Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Padding(padding: EdgeInsets.only(top: 20.0)),
                Container(
                    child: Center(
                  child: DropdownButton<String>(
                      icon: const Icon(Icons.arrow_circle_down_sharp),
                      value: _selectedItem,
                      items:
                          items.map<DropdownMenuItem<String>>((String value) {
                        return DropdownMenuItem<String>(
                          value: value,
                          child: Container(
                              width: 100,
                              child: Text(
                                value,
                                style: TextStyle(
                                  fontSize: 15,
                                ),
                              )),
                        );
                      }).toList(),
                      onChanged: (String? value) {
                        if (value != null) {
                          setState(() {
                            _selectedItem = value;
                          });
                        }
                      }),
                ))
              ])
        ]));
  }
}

实际上,我通过制作一个特殊的 dropDownMenu 解决了这个问题,它具有自己制作的完整特殊选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM