首页 文章

颤动:恢复小部件更新小部件?

提问于
浏览
4

在Flutter中,有没有办法在用户离开应用程序并更新回来时更新小部件?我的应用程序是基于时间的,尽快更新时间会很有帮助 .

2 回答

  • 4

    您可以收听生命周期事件

    class LifecycleEventHandler extends WidgetsBindingObserver {
      LifecycleEventHandler({this.resumeCallBack, this.suspendingCallBack});
    
      final FutureVoidCallback resumeCallBack;
      final FutureVoidCallback suspendingCallBack;
    
      @override
      Future<Null> didChangeAppLifecycleState(AppLifecycleState state) async {
        switch (state) {
          case AppLifecycleState.inactive:
          case AppLifecycleState.paused:
          case AppLifecycleState.suspending:
            await suspendingCallBack();
            break;
          case AppLifecycleState.resumed:
            await resumeCallBack();
            break;
        }
      }
    }
    
    
    class AppWidgetState extends State<AppWidget> {
      void initState() {
        super.initState();
    
        WidgetsBinding.instance.addObserver(
            new LifecycleEventHandler(resumeCallback(() => setState((){}))
        );
      }
      ...
    }
    
  • 2

    使用系统 Channels :

    import 'package:flutter/services.dart';
    
    SystemChannels.lifecycle.setMessageHandler((msg){
      debugPrint('SystemChannels> $msg');
      if(msg==AppLifecycleState.resumed.toString())setState((){});
    });
    

    `

相关问题