需要从其他有状态小部件更新布尔标志
Posted
技术标签:
【中文标题】需要从其他有状态小部件更新布尔标志【英文标题】:Need to update a boolean flag from other stateful widget 【发布时间】:2019-04-18 14:05:52 【问题描述】:我正在尝试为网络错误页面创建一个单独的有状态小部件,但我被困在如何通过 networkerror.dart 更新welcome.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。抱歉,如果不能让它更简单。谢谢
【问题讨论】:
How to Set/Update Sate of StatefulWidget from other StatefulWidget in Flutter?的可能重复 【参考方案1】:您可以使用ScopedModel 或 BloC 来更改应用中任何位置的不同小部件的状态。
【讨论】:
感谢您的回复,我确实使用回调函数方法解决了我的问题以上是关于需要从其他有状态小部件更新布尔标志的主要内容,如果未能解决你的问题,请参考以下文章