【发布时间】:2019-08-14 09:33:37
【问题描述】:
当我运行此代码时,它显示一个错误,即未找到正确的 scopedmodel。我认为我们必须为 底页,对话框也使用相同的模型,但它的行为异常。我如何实现如何在此类底部工作表和对话框中使用范围模型。
我是范围模型的菜鸟 任何帮助表示赞赏
import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
class ResourcesModel extends Model{
String selectsubject = 'Select the subject';
List<String> sublist=[];
change(int index){
debugPrint('${sublist[index]}');
selectsubject=sublist[index];
notifyListeners();
}
fetchsubjects() {
Firestore.instance.collection("resources").document("17csea").get().then((DocumentSnapshot ds){
for (var item in ds['subjects']) {
sublist.add(item);
}
notifyListeners();
});
}
}
class Resources extends StatelessWidget {
final ResourcesModel resourcesModel =ResourcesModel();
void showbottomsheet(context) async{
double height =MediaQuery.of(context).size.height;
await showModalBottomSheet(
context: context,
builder: (context){
return Container(
height: height/2,
child: ScopedModelDescendant<ResourcesModel>(
builder:(context,_,model){
debugPrint('helelel');
return (model.sublist.isEmpty)?Center(child:CircularProgressIndicator()):
ListView.separated(
itemCount: model.sublist.length,
separatorBuilder: (context,_){
return Divider(
color: Theme.of(context).primaryColor,
);
},
itemBuilder: (context,index){
return ListTile(
title: Text(model.sublist[index]),
onTap: model.change(index),
);
},
);
}
),
);
}
);
}
@override
Widget build(BuildContext context) {
return ScpedModel<ResourcesModel>(
model:resourcesmodel,
chilld:ScopedModelDescendant<ResourcesModel>(
builder:(context,_,model){
return Container(
color: Color(0xFFF3F3F3),
child: RaisedButton(
child: Text(model.selectsubject),
onPressed: (){
if(resourcesModel.sublist.isEmpty){
resourcesModel.fetchsubjects();
}
},
),
);
}
),
);
}
}
【问题讨论】:
标签: dart flutter state scoped-model