Flutter关闭App后如何保持登录状态?

How stay login after close App in Flutter?

我有一个应用程序保存在设备的本地存储中,利用 glutton: ^2.0.0 在调试模式下一切正常,但是当我编译 APK 时,我 运行 应用程序并从应用程序管理器中关闭它,当我重新运行 应用程序时,Main 方法的逻辑不起作用。

有什么想法吗?

void main() async {

  //VARIABLES
  String jsonDatos='';
  String _defaultHome = '/loguin';
  
  //INTENTAR
  try { 

    //EXISTE LA VARIABLE
    bool isExist = await Glutton.have('logueado');

    //EXISTE LA VARIABLE
    if (isExist){  

      //OBTENER VALOR
      bool? logueado = await Glutton.vomit('logueado');

      //SI NO ES NUL NI FALSE 
      if (logueado==null || logueado==false) {

        //PAGINA DE LOGUEO              
        _defaultHome=  '/loguin';

      }else{//SI ES TRUE    

        //ASIGNAR VALOR
        jsonDatos=await Glutton.vomit('jsdatos');

        //PARSEADO DEL JSON
        final dynamic clsDatosUsuario= jsonDecode(jsonDatos);

        //SI TIENE COORDENADAS REGISTRADAS
        if (clsDatosUsuario[0]["LATITUD"]!=""){

          //PAGINA PRINCIPAL
          _defaultHome= '/principal';

        }else{

          //PAGINA DE COORDENADAS
          _defaultHome= '/terminostexto';

        }         

      }  

    //SI NOEXISTE LA VARIABLE
    }else{

      //PAGINA DE LOGUEO           
     _defaultHome='/loguin';

    }

  } catch (error) {//SI HA CAMBIADO EL KEY

    //PAGINA DE LOGUEO         
    _defaultHome= '/loguin';

  } //SI HA CAMBIADO EL KEY

  runApp(LoginUiApp(initialRoute: _defaultHome));

}

class LoginUiApp extends StatelessWidget {
  final String initialRoute;
  //COLORES DEL HEADER
  final Color _primaryColor = HexColor('#002981');
  final Color _accentColor = HexColor('#002981');
  //final Color _encabezadoTabla = HexColor('#002981');
    
 //COLOR PARA EL FOOTER
  final Color _footeColor = HexColor('#D50000');  

  LoginUiApp({Key? key, required this.initialRoute} ) : super(key: key);
  
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //MANEJO DE IDIOMAS
      localizationsDelegates: const [
        GlobalMaterialLocalizations.delegate
      ],
      /*supportedLocales:const [
        Locale('en'),
        Locale('es')
      ],*/
      //MANEJO DE IDIOMAS
      //QUITAR DEBUB
      debugShowCheckedModeBanner: false,  
      //RUTAS
      routes: {
        '/loguin': (context) => const LoginPage(),
        '/terminos': (context) => const TerminosPage(),
        '/terminostexto': (context) => const TerminosTextoPage(),
        '/acerca': (context) => const AcercaPage(),
        '/contacto': (context) => const ContactoPage(),
        '/miubicacion': (context) => const MiUbicacionPage(),
        '/miubicacionmapa': (context) => const MiUbicacionMapaPage(),
        '/buscarfamilias': (context) => const BuscarFamiliasPage(),
        '/familiasencontradasmapa': (context) => const FamiliasEncontradasMapaPage(),
        '/principal': (context) =>  const PrincipalPage() ,        
        '/pagina2': (context) =>const Pagina2Page()
      },
      builder: OneContext().builder,
      navigatorKey: OneContext().key,
      title: 'CovoiturageLF',
      theme: ThemeData(
        primaryColor: _primaryColor,    
        secondaryHeaderColor: _footeColor,
        scaffoldBackgroundColor: Colors.grey.shade100, colorScheme: ColorScheme.fromSwatch(primarySwatch: Colors.grey).copyWith(secondary: _accentColor),               
      ),
      initialRoute: initialRoute,
      //home: const SplashPage(),
    );
  }

}```

WidgetsFlutterBinding.ensureInitialized()添加为您的主

中的第一行
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // your code

如果您想了解原因,请查看此 link

请注意 Glutton 也使用通道方法