Flutter 未获取multiselect bottomsheet的确切值

Flutter 未获取multiselect bottomsheet的确切值,flutter,flutter-layout,Flutter,Flutter Layout,我制作了一个multiselectbottomsheet字段来选择选项,但当我选择并打印该值时,它会显示“宗教实例”,而不是所选的值。 我也尝试过其他选择,但对我来说,什么都不管用 下面是相同的代码-: //===========================================================================to set value for Religion in chip static List<Religions> _r

我制作了一个multiselectbottomsheet字段来选择选项,但当我选择并打印该值时,它会显示“宗教实例”,而不是所选的值。 我也尝试过其他选择,但对我来说,什么都不管用

下面是相同的代码-:


  //===========================================================================to set value for Religion in chip

  static List<Religions> _religion = [
    Religions(id: 1, name: "Agnostic"),
    Religions(id: 2, name: "Atheist"),
    Religions(id: 3, name: "Buddhist"),
    Religions(id: 4, name: "Christian"),
    Religions(id: 5, name: "Hindu"),
    Religions(id: 6, name: "Jain"),
    Religions(id: 7, name: "Jewish"),
    Religions(id: 8, name: "Muslim"),
    Religions(id: 9, name: "Zoroastrian"),
    Religions(id: 10, name: "Sikh"),
    Religions(id: 11, name: "Spiritual"),
    Religions(id: 12, name: "Other"),
  ];
  final _items = _religion
      .map((item) => MultiSelectItem<Religions>(item, item.name))
      .toList();
  List<Religions> _selectedItems2 = [];
  List<Religions> _selectedItems3 = [];
  final _multiSelectKey = GlobalKey<FormFieldState>();





                Padding(
                  padding: const EdgeInsets.only(top: 10),
                  child: Text(
                    'What\'s their religion?',
                    style: TextStyle(
                      fontSize: 18,
                      color: Colors.green,
                    ),
                  ),
                ),
                Container(
                  child: Column(
                    children: <Widget>[
                      MultiSelectBottomSheetField(
                        initialChildSize: 0.7,
                        maxChildSize: 0.95,
                        listType: MultiSelectListType.CHIP,
                        checkColor: Colors.pink,
                        selectedColor: Colors.pink,
                        selectedItemsTextStyle: TextStyle(
                          fontSize: 25,
                          color: Colors.white,
                        ),
                        unselectedColor: Colors.greenAccent[200],
                        buttonIcon: Icon(
                          Icons.add,
                          color: Colors.pinkAccent,
                        ),

                        searchHintStyle: TextStyle(
                          fontSize: 20,
                        ),
                        searchable: true,
                        buttonText: Text(
                          '$Preligion', //"You can copy paste run full code below 
Because
onConfirm
return
List<Religions>

/// Fires when confirm is tapped.
  final void Function(List<V>) onConfirm;

//=================================================================================================================================为芯片中的宗教设置值
静态列表_=[
宗教(id:1,名称:“不可知论者”),
宗教(id:2,名称:“无神论者”),
宗教(id:3,名称:“佛教徒”),
宗教(id:4,名称:“基督徒”),
宗教(id:5,名称:“印度教”),
宗教(id:6,名称:“耆那教”),
宗教(id:7,名称:“犹太人”),
宗教(id:8,名称:“穆斯林”),
宗教(id:9,名称:“琐罗亚斯德教”),
宗教(id:10,名称:“锡克教”),
宗教(id:11,名称:“精神”),
宗教(id:12,名称:“其他”),
];
最终项目=\u宗教
.map((项)=>MultiSelectItem(项,项.名称))
.toList();
列表_selectedItems2=[];
列表_selectedItems3=[];
final _multiSelectKey=GlobalKey();
填充物(
填充:仅限常量边集(顶部:10),
子:文本(
“他们信仰什么?”,
样式:TextStyle(
尺码:18,
颜色:颜色。绿色,
),
),
),
容器(
子:列(
儿童:[
多选场(
初始儿童尺寸:0.7,
maxChildSize:0.95,
listType:MultiSelectListType.CHIP,
checkColor:Colors.pink,
selectedColor:Colors.pink,
选择编辑文本样式:文本样式(
尺寸:25,
颜色:颜色,白色,
),
未选择的颜色:颜色。绿色口音[200],
按钮图标(
Icons.add,
颜色:Colors.pinkAccent,
),
searchHintStyle:TextStyle(
尺寸:20,
),
可搜索:正确,
buttonText:文本(

“$Preligion',/”您可以复制下面的粘贴运行完整代码
因为
onConfirm
return
List

Column(
      children: <Widget>[
        MultiSelectBottomSheetField<Religions>(
工作演示

完整代码

导入“包装:颤振/材料.省道”;
导入“package:multi_select_flatter/bottom_sheet/multi_select_bottom_sheet_field.dart”;
导入“包装:多选择颤振/芯片显示/多选择芯片显示.dart”;
导入“package:multi_select_flatter/util/multi_select_item.dart”;
导入“package:multi_select_flatter/util/multi_select_list_type.dart”;
阶级宗教{
int-id;
字符串名;
宗教({this.id,this.name});
}
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
静态列表_=[
宗教(id:1,名称:“不可知论者”),
宗教(id:2,名称:“无神论者”),
宗教(id:3,名称:“佛教徒”),
宗教(id:4,名称:“基督徒”),
宗教(id:5,名称:“印度教”),
宗教(id:6,名称:“耆那教”),
宗教(id:7,名称:“犹太人”),
宗教(id:8,名称:“穆斯林”),
宗教(id:9,名称:“琐罗亚斯德教”),
宗教(id:10,名称:“锡克教”),
宗教(id:11,名称:“精神”),
宗教(id:12,名称:“其他”),
];
最终项目=\u宗教
.map((项)=>MultiSelectItem(项,项.名称))
.toList();
列表_selectedItems2=[];
列表_selectedItems3=[];
final _multiSelectKey=GlobalKey();
字符串Preligion=“test”;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
主体:容器(
子:列(
儿童:[
多选场(
初始儿童尺寸:0.7,
maxChildSize:0.95,
listType:MultiSelectListType.CHIP,
checkColor:Colors.pink,
selectedColor:Colors.pink,
选择编辑文本样式:文本样式(
尺寸:25,
颜色:颜色,白色,
),
未选择的颜色:颜色。绿色口音[200],
按钮图标(
Icons.add,
颜色:Colors.pinkAccent,
),
searchHintStyle:TextStyle(
尺寸:20,
),
可搜索:正确,
buttonText:文本(
“$Preligion”,/”,
样式:TextStyle(
尺码:18,
颜色:颜色。灰色,
),
溢出:TextOverflow.省略号,
最大行数:5,
),
标题:正文(
“宗教”,
样式:TextStyle(
尺寸:25,
颜色:颜色。粉红色,
),
),
项目:_项目,
onConfirm:(值){
设置状态(){
_selectedItems2=值;
});
打印('selected:${u selectedItems2}');
_selectedItems2
    _selectedItems2.forEach((item) {
                    print("${item.id} ${item.name}");
                    Preligion = "$Preligion ${item.name}";
                  });
import 'package:flutter/material.dart';
import 'package:multi_select_flutter/bottom_sheet/multi_select_bottom_sheet_field.dart';
import 'package:multi_select_flutter/chip_display/multi_select_chip_display.dart';
import 'package:multi_select_flutter/util/multi_select_item.dart';
import 'package:multi_select_flutter/util/multi_select_list_type.dart';

class Religions {
  int id;
  String name;

  Religions({this.id, this.name});
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  static List<Religions> _religion = [
    Religions(id: 1, name: "Agnostic"),
    Religions(id: 2, name: "Atheist"),
    Religions(id: 3, name: "Buddhist"),
    Religions(id: 4, name: "Christian"),
    Religions(id: 5, name: "Hindu"),
    Religions(id: 6, name: "Jain"),
    Religions(id: 7, name: "Jewish"),
    Religions(id: 8, name: "Muslim"),
    Religions(id: 9, name: "Zoroastrian"),
    Religions(id: 10, name: "Sikh"),
    Religions(id: 11, name: "Spiritual"),
    Religions(id: 12, name: "Other"),
  ];
  final _items = _religion
      .map((item) => MultiSelectItem<Religions>(item, item.name))
      .toList();
  List<Religions> _selectedItems2 = [];
  List<Religions> _selectedItems3 = [];
  final _multiSelectKey = GlobalKey<FormFieldState>();
  String Preligion = "test";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
        child: Column(
          children: <Widget>[
            MultiSelectBottomSheetField<Religions>(
              initialChildSize: 0.7,
              maxChildSize: 0.95,
              listType: MultiSelectListType.CHIP,
              checkColor: Colors.pink,
              selectedColor: Colors.pink,
              selectedItemsTextStyle: TextStyle(
                fontSize: 25,
                color: Colors.white,
              ),
              unselectedColor: Colors.greenAccent[200],
              buttonIcon: Icon(
                Icons.add,
                color: Colors.pinkAccent,
              ),
              searchHintStyle: TextStyle(
                fontSize: 20,
              ),
              searchable: true,
              buttonText: Text(
                '$Preligion', //"????",
                style: TextStyle(
                  fontSize: 18,
                  color: Colors.grey,
                ),
                overflow: TextOverflow.ellipsis,
                maxLines: 5,
              ),
              title: Text(
                "Religions",
                style: TextStyle(
                  fontSize: 25,
                  color: Colors.pink,
                ),
              ),
              items: _items,
              onConfirm: (values) {
                setState(() {
                  _selectedItems2 = values;
                });
                print('selected : ${_selectedItems2}');

                _selectedItems2
                    .forEach((item) => print("${item.id} ${item.name}"));
                /*senduserdata(
                    'partnerreligion', '${_selectedItems2.toString()}');*/
              },
              chipDisplay: MultiSelectChipDisplay(
                textStyle: TextStyle(
                  fontSize: 18,
                  color: Colors.black,
                ),
                onTap: (value) {
                  setState(() {
                    _selectedItems2.remove(value);
                  });

                  print('removed: ${_selectedItems2.toString()}');
                },
              ),
            ),
            _selectedItems2 == null || _selectedItems2.isEmpty
                ? MultiSelectChipDisplay(
                    onTap: (item) {
                      setState(() {
                        _selectedItems3.remove(item);
                        print('removed below: ${_selectedItems3.toString()}');
                      });
                      _multiSelectKey.currentState.validate();
                    },
                  )
                : MultiSelectChipDisplay(),
          ],
        ),
      ),
    );
  }
}