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