Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从另一个小部件推送和弹出一个小部件(B从A转换)_Flutter_Dart_Flutter Bloc - Fatal编程技术网

Flutter 如何从另一个小部件推送和弹出一个小部件(B从A转换)

Flutter 如何从另一个小部件推送和弹出一个小部件(B从A转换),flutter,dart,flutter-bloc,Flutter,Dart,Flutter Bloc,假设我有两个小部件A和B。A侦听事件更改。事件类型为连接状态 A --> One Widget (separate screen) B --> Another Widget (separate screen) Event Type | --> INTERNET_CONNECTED --> INTERNET_NOT_CONNECTED 我想根据A中触发的事件推送和弹出B小部件。如果事件未连接互联网,则推送B,如果连接互联网,则弹出B。有人可以建议我如何实现它。

假设我有两个小部件A和B。A侦听事件更改。事件类型为连接状态

A --> One Widget (separate screen)
B --> Another Widget (separate screen)

Event Type
 |
 --> INTERNET_CONNECTED 
 --> INTERNET_NOT_CONNECTED

我想根据A中触发的事件推送和弹出B小部件。如果事件未连接互联网,则推送B,如果连接互联网,则弹出B。有人可以建议我如何实现它。谢谢…

您可以在堆栈()中使用Visibility()小部件根据变量显示小部件

堆栈(
儿童:[
A(),
可见度(
可见:_connected,//假设_connected是一个bool,如果未连接INTERNET,则返回true
儿童:B()
),
],
),
像这样做

制作一个有状态的小部件


import 'package:connectivity/connectivity.dart';//https://pub.dev/packages/connectivity

@override
initState() {
  super.initState();
  getcon();
}

getcon() async{

var connectivityResult = await (Connectivity().checkConnectivity()).then((value) {
if (value== ConnectivityResult.mobile||value== ConnectivityResult.wifi) {
  Navigator.pop(context)//popping the screen A
Navigator.push()//write code here to push to screen B


}
                  ;

}

如何根据状态使用可见性小部件显示/隐藏B?小部件B是一个单独的屏幕,它不是屏幕a的一部分。如何在此场景中使用可见性?因此,您希望根据某个事件从一个屏幕过渡到另一个屏幕?推出新路线如何?是的,过渡。推动一条路线是可行的。我能推它。但是,当屏幕B位于A的顶部时,我无法在事件更改时弹出B。您是否在屏幕A中使用提供程序进行状态管理?(如果您使用的是提供者,让B听状态,并根据需要弹出。)只是一个建议。在这种情况下。A和B都将成为一个屏幕的一部分。这里我要说明的是,我想根据屏幕A中的事件推送和弹出屏幕B。如果B()可见并且是一个全屏小部件,它将覆盖A()。我用这种方法制作了一个完整的应用程序,它就像在站点之间切换一样。是的,我理解你的方法,但我想知道导航是否可行。导航通过。。。?您可以在顶部始终有按钮或任何形式的界面元素,它们可以操纵用于确定B()是否可见的值。例如:您可以在B()中放置一个按钮“returntoa()”,该按钮将“visible”参数中使用的值设置为false。但是一定要使用setState((){});更新您的状态。