Необходимо обновить логический флаг из другого виджета с состоянием - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь создать отдельный виджет Stateful для страницы сетевых ошибок, но я застрял в том, как обновить логический флаг, который находится внутри welcome.dart через networkerror.dart

NetworkError.dart

  class NetworkError extends StatefulWidget {
@override
  State<StatefulWidget> createState() {
    return NetworkErrorState() ;
  }
}
class NetworkErrorState extends State<NetworkError>{


  @override
  Widget build(BuildContext context) {
    return Container(

      child: Center(
          child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Image.asset('assets/no_network.png'),
          RaisedButton(
            color: Color(0xff7F00FF),
            child: Text(
              'Retry',
              style: TextStyle(
                  color: Colors.black, letterSpacing: 2.0, fontSize: 15.0),
            ),
            onPressed: () {

              NetworkUtil().netcheck(context).then((result) {
                if (result) {
                WelcomePage().createState().isConnected=true;
                } else {
                WelcomePage().createState().isConnected=false;
                }
              });
            },
          )
        ],
      )),
    );
  }
}

Welcome.dart

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        drawer: Drawer(
          child: ListView(
            children: drawerWidgets(),
          ),
        ),
        key: _scaffoldKey,

        body: isConnected
            ? isLoading
                ? showSpinner()
                : Container(
                    child: Center(
                      child: ListView(
                        shrinkWrap: true,
                        children: <Widget>[
                          Center(
                            child: Container(
                              padding: const EdgeInsets.all(16.0),
                              child: Form(
                                child: Column(
                                  crossAxisAlignment:
                                      CrossAxisAlignment.stretch,
                                  children: submitWidgets(context),
                                ),
                              ),
                            ),
                          )
                        ],
                      ),
                    ),
                  )
            : NetworkError(),
      ),
    );
  }
}

Я хочу обновить логический флаг isConnected из network.dart в значение true, когда сетевые данные доступны. Извините, если не сделал это проще. Thanx

1 Ответ

0 голосов
/ 27 ноября 2018

Вы можете использовать ScopedModel или BloC для того, чтобы изменять состояния из разных виджетов в любом месте вашего приложения.

...