Когда я открываю приложение. Приложение будет вызывать _callAPI () asyn c {}, так как я поместил его в init. Затем я нажимаю counter ++, чтобы добавить значение. Затем он отобразит добавленную стоимость на экране. Затем отправьте go на следующую страницу. когда я нажимаю назад страницу. Страница вызовет API, и вдруг моя область действия не работает. когда я пытаюсь добавить ценность. Значение не меняется. Когда я печатаю в консоли отладки. Это добавило значение. Но оно не меняется на моем экране. Я думаю, что проблема в том, что моя модель объема больше не работает в моем приложении.
main.dart
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final MainModel _model = MainModel();
return ScopedModel<MainModel>(
model: _model,
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
),
);
}
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState(){
super.initState();
fetchList().then((value){
setState(() {
_callAPI();
});
});
}
_callAPI() async {
try{
String dataURL = "url";
http.Response response = await http.get(dataURL);
}
on Exception{
}
}
Widget build(BuildContext context) {
return ScopedModelDescendant<MainModel>(
builder: (BuildContext context, Widget child, MainModel model) {
return Scaffold(
appBar: AppBar(
title: appBarTitle,
centerTitle: true,
actions: <Widget>[
Stack(
children: <Widget>[
new IconButton(icon: Icon(Icons.card_travel), onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => cartPage()),
);
}),
Container(
child: model.list.length != 0 ? new Positioned(
right: 11,
top: 11,
child: new Container(
padding: EdgeInsets.all(2),
decoration: new BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(6),
),
constraints: BoxConstraints(
minWidth: 16,
minHeight: 16,
),
child: Text(
"${model.list.length}",
style: TextStyle(
color: Colors.white,
fontSize: 12,
),
textAlign: TextAlign.center,
),
),
) : new Container()
),
],
),
],
backgroundColor: getMainColor(),
elevation: 10.0,
),
drawer: new Drawer(
child:
_drawerLeft(context),
),
body:
Container(
),
);}
);}
Widget addValue{
return Padding(
padding: EdgeInsets.fromLTRB(9, 0, 0, 0),
child: SizedBox (
height:35,
width:35,
child: FloatingActionButton(
heroTag: "addM",
onPressed: () {
Map setValue = {"var1 " : var1};
model.addInList(setValue);
Navigator.push(
context,
MaterialPageRoute(builder: (context) => nextPage()),
);
},
child: Icon(
Icons.add_circle_outline,
color: Colors.white,
size: 19,
),
backgroundColor: getMainColor(),
),
),
)
}
}
scoped_models \ main.dart
List _list=[];
List get list{
return _list;
}
void addInList(Map newList){
_list.insert(0, newList);
notifyListeners();
}