Firebase Flatter从Sqflite获取DropdownButtonFormField列表项-错误0或2值

Firebase Flatter从Sqflite获取DropdownButtonFormField列表项-错误0或2值,firebase,flutter,sqflite,Firebase,Flutter,Sqflite,我试图创建一个dropdownButtonFormField,其中包含来自sqflite数据库的对象值列表。我已经到了显示列表项的地步,但是当我点击其中一个时,它会喊出一个错误 类测试扩展StatefulWidget{ @凌驾 _TestState createState(); } 类_TestState扩展状态{ 第二节当前节; @凌驾 小部件构建(构建上下文){ 最终部分Provider=Provider.of(上下文); 返回脚手架( 主体:容器( 填充:边缘设置。全部(15), 孩子:

我试图创建一个dropdownButtonFormField,其中包含来自sqflite数据库的对象值列表。我已经到了显示列表项的地步,但是当我点击其中一个时,它会喊出一个错误

类测试扩展StatefulWidget{
@凌驾
_TestState createState();
}
类_TestState扩展状态{
第二节当前节;
@凌驾
小部件构建(构建上下文){
最终部分Provider=Provider.of(上下文);
返回脚手架(
主体:容器(
填充:边缘设置。全部(15),
孩子:未来建设者(
future:sectionsProvider.getSections(),
生成器:(BuildContext上下文,异步快照){
如果(!snapshot.hasData){
返回文本('加载…');
}否则{
返回DropdownButtonFormField(
//装饰:输入装饰.copyWith(hintText:currentSection.title),
//值:currentSection,
项目:snapshot.data.map((部分){
返回下拉菜单项(
值:第节,
孩子:排(
儿童:[
图标(
图标。亮度_1,
尺码:15,
颜色:颜色(部分颜色),
),
尺寸箱(宽度:20,),
正文(章节标题),
],
),
);
},
).toList(),
isExpanded:错,
是的,
一旦更改:(值){
设置状态(){
currentSection=值;
});
},
);
}
},
),
),
);
}
}

DropdownButtonFormField缺少值参数,因为您将收到此错误

联合国评论以下行将为您工作

value: currentSection,
更新:

我认为问题在于,你们们正在将整个对象赋值给参数值,下拉列表必须将值和下拉列表值进行比较,以检查新的赋值是否在下拉列表项中可用

然而,在颤振(dart)中,我们不能直接比较对象。您必须重写==运算符和hascode才能这样做,但我们可以使用equalable包轻松进行比较

我不认识你们,所以我在下面的示例类中做了一些更改

首先,在pubspec.yaml文件中包含包

class Section extends Equatable {
  final int id;
  Section({this.id});

  @override
  List<Object> get props => [id];  // pass all variable with(,) separated as i pass id.
}
类节扩展了equalable{
最终int id;
节({this.id});
@凌驾
List get props=>[id];//传递所有变量,其中(,)与我传递的id分隔。
}

DropdownButtonFormField缺少值参数,因为您将收到此错误

联合国评论以下行将为您工作

value: currentSection,
更新:

我认为问题在于,你们们正在将整个对象赋值给参数值,下拉列表必须将值和下拉列表值进行比较,以检查新的赋值是否在下拉列表项中可用

然而,在颤振(dart)中,我们不能直接比较对象。您必须重写==运算符和hascode才能这样做,但我们可以使用equalable包轻松进行比较

我不认识你们,所以我在下面的示例类中做了一些更改

首先,在pubspec.yaml文件中包含包

class Section extends Equatable {
  final int id;
  Section({this.id});

  @override
  List<Object> get props => [id];  // pass all variable with(,) separated as i pass id.
}
类节扩展了equalable{
最终int id;
节({this.id});
@凌驾
List get props=>[id];//传递所有变量,其中(,)与我传递的id分隔。
}

是的,当我删除该行上的注释时,整个屏幕将崩溃,并显示与仅显示红色错误屏幕相同的错误!还添加了snapshot.data输出。我在原始帖子中包含了错误截图!snapshot.data的输出是一个Section对象的列表
[Section实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例]
add snapshot.data output。我已将其包含在上次回复中。当我删除该行上的注释时,整个屏幕将崩溃,并显示与仅显示红色错误屏幕相同的错误!还添加snapshot.data输出。我已经在原始帖子中包含了错误截图!snapshot.data的输出是一个Section对象的列表
[Section实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例,'Section'实例]
添加snapshot.data输出。我已在上次答复中包含了它