Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter CustomScrollView对象不使用StatefulBuilder的输入进行更新_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter CustomScrollView对象不使用StatefulBuilder的输入进行更新

Flutter CustomScrollView对象不使用StatefulBuilder的输入进行更新,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,我有一个CustomScrollView,可以根据用户输入进行更新。ListView中的实际项目位于Scaffold对象的主体内的CustomScroll视图中的SliverChildBuilderDelegate中(请参见下面的代码)。如果用户在showDialog对象中的StatefulBuilder中以表单形式添加项目,则该项目不会添加到planets列表中,因此不会更新ListView。我认为问题是由StatefulBuilder引起的,我需要更新我的下拉按钮。 我的代码: 导入“包装:

我有一个CustomScrollView,可以根据用户输入进行更新。ListView中的实际项目位于Scaffold对象的
主体内的CustomScroll视图中的
SliverChildBuilderDelegate
中(请参见下面的代码)。如果用户在
showDialog
对象中的StatefulBuilder中以表单形式添加项目,则该项目不会添加到
planets
列表中,因此不会更新ListView。我认为问题是由
StatefulBuilder
引起的,我需要更新我的
下拉按钮。
我的代码:

导入“包装:颤振/材料.省道”;
导入“包:intl/intl.dart”;
void main(){
runApp(材料应用程序)(
主页:主页(),
));
}
类主页扩展了StatefulWidget{
@凌驾
_HomePageState createState()=>\u HomePageState();
}
类行星{
最终字符串id;
最后的字符串名;
最终管柱位置;
最终串距;
最终管柱重力;
最终字符串图像;
const Planet({this.id,this.name,this.location,this.distance,this.gravity,this.image});
}
等级硬币{
int-id;
字符串名;
硬币(这个id,这个名字);
静态列表getCoins(){
返回[
硬币(1,‘硬币1’),
硬币(2,‘硬币2’),
硬币(3,‘硬币3’),
硬币(4,‘硬币4’),
硬币(5,‘硬币5’),
];
}
}
类菜单项{
字符串标题;
字符串图标;
颜色;
函数func;
菜单项(this.title、this.icon、this.color、this.func);
}
类_HomePageState扩展状态{
List_coins=Coin.getCoins();
列表-下拉菜单项;
硬币(选择硬币);;
@凌驾
void initState(){
_dropdownMenuItems=构建dropdownMenuItems(_硬币);
_selectedCoin=\u dropdownMenuItems[0]。值;
super.initState();
_menuItems=createMenuItems();
_selectedMenuItem=\u menuItems.first;
}
菜单项\u选择的菜单项;
列表菜单项;
列表_menuOptionWidgets=[];
列表createMenuItems(){
最终菜单项=[
新菜单项(“Dashboard”,“assets/images/Dashboard.png”,Colors.black,()=>new Dashboard()),
新菜单项(“Cows”,“assets/images/cow.png”,Colors.green,()=>newcows()),
];
返回菜单项;
}
_onSelectItem(菜单项菜单项){
设置状态(){
_selectedMenuItem=menuItem;
});
导航器。推(
上下文
MaterialPackageRoute(生成器:(上下文)=>HomePage()),
);
Navigator.of(context.pop();//关闭侧菜单
}
列出buildDropdownMenuItems(列出硬币){
列表项=列表();
用于(硬币中的硬币){
items.add(
下拉菜单项(
价值:硬币,
儿童:
正文(
coin.name,
样式:TextStyle(
字体大小:18.0,
颜色:颜色。黑色87,
fontWeight:fontWeight.bold
),
),
),
);
}
退货项目;
}
OnChangedDropDownItem(硬币选择硬币,状态设置器设置状态){
设置状态(){
_selectedCoin=selectedCoin;
打印(“${u selectedCoin.name}”);
});
}
final coinController=TextEditingController();
最终数量控制器=TextEditingController();
最终目的控制器=文本编辑控制器();
@凌驾
无效处置(){
//处置小部件时清理控制器。
conicontroller.dispose();
amountController.dispose();
purposeController.dispose();
super.dispose();
}
列出行星=[];
@凌驾
小部件构建(构建上下文){
_menuOptionWidgets=[];
DateTime now=DateTime.now();
字符串formattedDate=DateFormat('yyyy-MM-dd kk:MM')。格式(现在);
for(变量菜单项在菜单项中){
_menuOptionWidgets.add(新容器(
装饰:新盒子装饰(
颜色:菜单项==\u selectedMenuItem
?颜色。灰色[200]
:颜色。白色),
孩子:新的ListTile(
前导:新建Image.asset(menuItem.icon),
onTap:()=>\u onSelectItem(菜单项),
标题:正文(
menuItem.title,
样式:新文本样式(
字体大小:20.0,
颜色:menuItem.color,
fontWeight:menuItem==\u selectedMenuItem
?FontWeight.bold
:fontwweight.w300),
))));
_menuOptionWidgets.add(
新尺寸盒子(
孩子:新中心(
子容器:新容器(
边距:新边仅限方向(起点:20.0,终点:20.0),
高度:0.3,
颜色:颜色。灰色,
),
),
),
);
}
双屏高;
screenHeight=MediaQuery.of(context).size.height;
返回脚手架(
appBar:appBar(
标题:文本(“仪表板”),
背景颜色:颜色。来自RGBO(53,73,94,0.9),
标高:0.0,
//前导:Container(),
),
抽屉:新抽屉(
子:新列表视图(
儿童:[
新容器(
孩子:新的ListTile(
领先:新CircleAvatar(
背景颜色:Colors.black,
半径:40.0,
子:文本(
“L”,样式:TextStyle(
颜色:颜色。橙色,
字体大小:46.0),
),
),
标题:文本(“欢迎”,样式:TextStyle(fontSize:46.0)
),
边距:新边仅限方向(顶部:20.0),
颜色:颜色,白色,
约束:框约束(最大高度:90.0,最小高度:90.0)),
新尺寸盒子(
孩子:新中心(
子容器:新容器(
保证金:
仅限新边方向(起点:10.0,e