Flutter 按下“后退”按钮并重新打开应用程序后,Flatter会卡在启动屏幕上

Flutter 按下“后退”按钮并重新打开应用程序后,Flatter会卡在启动屏幕上,flutter,splash-screen,freeze,Flutter,Splash Screen,Freeze,我是一名颤振初学者,我尝试使用launch_background.xml实现一个初始屏幕,如下所示: <?xml version="1.0" encoding="utf-8"?> <!-- Modify this file to customize your launch splash screen --> <layer-list xmlns:android="http://schemas.android.com/a

我是一名颤振初学者,我尝试使用launch_background.xml实现一个初始屏幕,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />

    <!-- You can insert your own image assets here -->
    <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/ceb_launcher" />
    </item> -->
</layer-list>
当我返回时,应用程序在启动屏幕上卡住:

D/EGL_emulation(28992): eglCreateContext: 0xe3b654c0: maj 2 min 0 rcv 2
D/EGL_emulation(28992): eglCreateContext: 0xe3b65520: maj 2 min 0 rcv 2
D/        (28992): HostConnection::get() New Host Connection established 0xdb871800, tid 29168
D/EGL_emulation(28992): eglMakeCurrent: 0xe3b65520: ver 2 0 (tinfo 0xdb816c30)
D/        (28992): HostConnection::get() New Host Connection established 0xdb899640, tid 29167
D/EGL_emulation(28992): eglMakeCurrent: 0xe3b654c0: ver 2 0 (tinfo 0xdb883bb0)
D/EGL_emulation(28992): eglCreateContext: 0xdb885060: maj 2 min 0 rcv 2
D/EGL_emulation(28992): eglMakeCurrent: 0xdb885060: ver 2 0 (tinfo 0xdb883bb0)
D/EGL_emulation(28992): eglMakeCurrent: 0xe3b654c0: ver 2 0 (tinfo 0xdb883bb0)
D/EGL_emulation(28992): eglMakeCurrent: 0xdb885f60: ver 2 0 (tinfo 0xc9596880)
下面是我的一段代码:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(AppWidget());
}


class AppWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context){

    SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);

    return MultiProvider(
      providers: [
        ChangeNotifierProvider.value(value: AuthenticationBLOC(),),
        ChangeNotifierProvider.value(value: EquipmentBLOC()),
        ChangeNotifierProvider.value(value: ScreenDrawerBLOC()),
      ],
      child:Consumer<AuthenticationBLOC>(builder: (ctx, autentication, _) => MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: themeAllApp(),
        home: isAuthenticated(autentication),
        onGenerateRoute: routesApp(context)
        ),
      ),
    );
  }
}


Widget isAuthenticated(AuthenticationBLOC autentication){
  if(autentication.authenticated != true){
    return FutureBuilder(
      future: autentication.tryAutoLogIn(),
      builder: (context, snapshot) => snapshot.connectionState == ConnectionState.waiting ? 
        LoadingScreenWidget() : LogInScreenWidget(),
    );
  }else{
    return Consumer<ScreenDrawerBLOC>(
      builder: (context, screen, _) => screen.isTypeScreen ? TypeDeviceScreenWidget() : 
        ContactScreenWidget(),
    );
  }
}
void main(){
WidgetsFlutterBinding.ensureInitialized();
runApp(AppWidget());
}
类AppWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
SystemChrome.setPreferredOrientations([DeviceOrientation.GraphicUp]);
回程多供应商(
供应商:[
ChangeNotifierProvider.value(值:AuthenticationBLOC(),),
ChangeNotifierProvider.value(值:EquipmentBLOC()),
ChangeNotifierProvider.value(值:ScreenDrawerBLOC()),
],
子项:消费者(建筑商:(ctx,自动诱导,)=>MaterialApp(
debugShowCheckedModeBanner:false,
主题:ThemeAlapp(),
首页:已认证(自动认证),
onGenerateRoute:RouteApp(上下文)
),
),
);
}
}
小部件已验证(AuthenticationBLOC自动验证){
if(autentication.authenticated!=真){
回归未来建设者(
future:autentication.tryAutoLogIn(),
生成器:(上下文,快照)=>snapshot.connectionState==connectionState.waiting?
LoadingScreenWidget():LoginsScreenWidget(),
);
}否则{
退货消费者(
生成器:(上下文,屏幕,)=>screen.isTypeScreen?TypeDeviceScreenWidget():
ContactScreenWidget(),
);
}
}
我已经跑了《颤栗颤栗医生》,一切都好


如果有人对正在发生的事情有任何想法,我将不胜感激。

您是否知道如何处理这个问题?我也有同样的问题。。谢谢@JS_LnMstr我已经看到保持颤振活动是一种选择。我读过这个和这个。我试过了,但不管用。也许这些网站可以帮助你。如果你能找到一个解决方案,我将不胜感激。在我找到你的帖子之前,我已经发布了一个关于它的新主题,有人说这是调试构建的正常行为。查看此处的帖子:
void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(AppWidget());
}


class AppWidget extends StatelessWidget {

  @override
  Widget build(BuildContext context){

    SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);

    return MultiProvider(
      providers: [
        ChangeNotifierProvider.value(value: AuthenticationBLOC(),),
        ChangeNotifierProvider.value(value: EquipmentBLOC()),
        ChangeNotifierProvider.value(value: ScreenDrawerBLOC()),
      ],
      child:Consumer<AuthenticationBLOC>(builder: (ctx, autentication, _) => MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: themeAllApp(),
        home: isAuthenticated(autentication),
        onGenerateRoute: routesApp(context)
        ),
      ),
    );
  }
}


Widget isAuthenticated(AuthenticationBLOC autentication){
  if(autentication.authenticated != true){
    return FutureBuilder(
      future: autentication.tryAutoLogIn(),
      builder: (context, snapshot) => snapshot.connectionState == ConnectionState.waiting ? 
        LoadingScreenWidget() : LogInScreenWidget(),
    );
  }else{
    return Consumer<ScreenDrawerBLOC>(
      builder: (context, screen, _) => screen.isTypeScreen ? TypeDeviceScreenWidget() : 
        ContactScreenWidget(),
    );
  }
}