Модель Scoped - не работает после go вернуться на предыдущую страницу - PullRequest
0 голосов
/ 29 апреля 2020

Когда я открываю приложение. Приложение будет вызывать _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();
  }
...