【问题标题】:How to log out onDestroy in flutter web app如何在 Flutter Web 应用程序中注销 onDestroy
【发布时间】:2021-08-28 19:16:51
【问题描述】:

当应用程序被销毁时,如何从应用程序中注销用户。我制作了一个颤动的 Web 应用程序,在该应用程序中,我很容易成功注销用户并通过基本注销按钮记录用户注销的日期和时间,但我想记录用户点击关闭按钮或关闭的日期和时间应用程序无需注销。我该怎么做才能有人帮忙

【问题讨论】:

    标签: flutter datetime flutter-web logout destroy


    【解决方案1】:

    我认为 State.dispose 生命周期方法应该在这个状态销毁时调用,就像 android Activity.onDestroy 一样,无论是退出这个 State(Activity) 还是退出应用程序。我必须在 state dispose 时做一些事情,但是当 app 退出时 dispose 方法没有被调用。

    import 'package:flutter/material.dart';
     import 'package:flutter/services.dart';
    
     void main() => runApp(MyApp());
    
       class MyApp extends StatelessWidget {
     // This widget is the root of your application.
    @override
      Widget build(BuildContext context) {
        return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue, primaryColor: Colors.white),
      home: MainActivity(),
    );
     }
    }
    
    class MainActivity extends StatefulWidget {
      @override
      _MainActivityState createState() => _MainActivityState();
    }
    
     class _MainActivityState extends State<MainActivity>
    with WidgetsBindingObserver {
     @override
     void initState() {
    super.initState();
    
    print('initState');
    WidgetsBinding.instance.addObserver(this);
    }
    
    @override
     void deactivate() {
      super.deactivate();
    //this method not called when user press android back button or quit
    print('deactivate');
    }
    
    @override
    void dispose() {
    super.dispose();
    WidgetsBinding.instance.removeObserver(this);
    
    //this method not called when user press android back button or quit
    print('dispose');
    }
    
    @override
     void didChangeAppLifecycleState(AppLifecycleState state) {
     //print inactive and paused when quit
      print(state);
     }
    
     @override
     Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Title'),
      ),
      body: Center(
        child: RaisedButton(
          onPressed: () {
            SystemNavigator.pop();
          },
          child: Text('Quit'),
        ),
      ),
    );
     }
     }
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2015-09-27
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2019-09-06
      • 2011-02-13
      • 2019-06-19
      相关资源
      最近更新 更多