首页 > 解决方案 > 需要从其他有状态小部件更新布尔标志

问题描述

我正在尝试为网络错误页面创建一个单独的有状态小部件,但我被困在如何通过 networkerror.dart 更新welcome.dart 内部的布尔标志

网络错误.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;
                }
              });
            },
          )
        ],
      )),
    );
  }
}

欢迎.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。对不起,如果不能让它更简单。谢谢

标签: androiddartflutterflutter-layoutdart-pub

解决方案


您可以使用ScopedModel或 BloC 来更改应用程序中任何地方的不同小部件的状态。


推荐阅读