フラッタにおけるApplixecyClestate管理の実装


モバイルアプリケーション開発者として、いくつかの時点でApplifeCycleStateを使用する必要があります.フラッタの使い方で、フラッタでApplifecyClestate管理に関してオンラインで多くの役に立つ記事を見つけることができませんでした.だから私はそれについての記事を書かない理由を考えた.
思考の前に私はこの記事を書くために来た前に、私はJinda -ブータンクイズアプリと呼ばれるアプリを開発していた.あなたがこの記事を読んでいる時までに、これは出版されなければなりませんでした.私のアプリでは、私はアプリのゲームプレイで音楽を実装していた.私がバックグラウンドに音楽を送っているとき、私が私の電話をロックするときでも、音楽がまだ遊んでいたとき.
チュートリアル!

ApplifeCyState管理
お使いの携帯アプリは、その使用中に様々な状態にすることができます.この状態は、APPのライフサイクル状態として知られている.我々は、あなたのアプリがある状態ごとに異なる方法をトリガすることができます.
これらの状態通知は、お使いのデバイスのオペレーティングシステムによって送信されます.しかし、常に通知を受け取ることを期待することはできません.いくつかのまれな状況では、これらの状態通知を受信しません.たとえば、ユーザーがデバイスからバッテリーを削除した場合は、任意の通知を受信されません.私は、これはほとんどのスマートフォンは、非取り外し可能なバッテリーが付属して、これはまれなケースであると仮定します.
公式Flutter Documentationによると、記載されている5つの異なる定数があります.一つずつ理解しましょう.

分離
この状態では、アプリケーションはまだフラッターエンジン上でホストされているが、任意のホストビューから削除されます.
これは、エンジンがビューなしで実行していることを意味します.エンジンが最初に初期化されたとき、またはナビゲータのPOPメソッドによって破壊されたビューの後にビューをアタッチする進行中のいずれかを行うことができます.

不活発な
アプリケーションは非アクティブ状態にあり、ユーザー入力を受信していません.
この状態は、フォアグラウンド不活性状態で実行されるアプリケーションまたはフラッタホストビューに対応する.アプリケーションの切り替えは、電話の呼び出しでは、TouchID要求に応答するときは、アプリケーションスイッチャまたはコントロールセンター、またはUiViewControllerホスティングアプリを入力するときは、IOSのデバイスのために移行しているアプリの移行.Androidでは、これはフォアグラウンド不活発な状態で実行しているアプリケーションまたはフラッタホストビューに対応します.別の活動は、分割画面のアプリ、電話、画像アプリ、画像対話、または別のウィンドウの画像などのフォーカスされているときにこの状態へのアプリケーションの移行.この状態のアプリはいつでも一時停止されるかもしれないと仮定すべきです.

一時的な
休止状態の間、アプリケーションは現在、ユーザー入力に応答していなくて、バックグラウンドで実行していないユーザーに目に見えません.

再開
アプリケーションが表示され、ユーザー入力に応答します.


このenumの値の定数リスト.

フラッタウィジェット
WidgetsBindingObserverは、ウィジェット層のバインドに登録するクラスのインターフェイスです.
このクラスを直接拡張することで、すべてのハンドラの既定の動作を取得することができます.または、Instementsキーワードで使用することができます.この場合、すべてのハンドラを実装する必要があります.
このクラスから次の2つのメソッドを使用します.

ウィジェットのバインド.ADDobServer
指定したオブジェクトをバインドオブザーバとして登録します.バインディングオブザーバは、さまざまなアプリケーションイベントが発生したときに通知されます.たとえば、システムロケールが変更されたとき.一般に、ウィジェットツリーの1つのウィジェットは、結合オブザーバとして自分自身を登録し、システム状態を継承したウィジェットに変換します.

ウィジェットのバインド.リモートオブザーバ
指定したオブザーバを登録します.これは比較的高価である(登録されたオブザーバの数のO(n))として、控えめに使用されるべきです.

ApplifeCycleStateのフラッターコードへの追加
理論の十分な方法は、私たちのコードでそれを実装する方法を見ることができます.
まず、WidgetsBindingObserverを使用してクラスを拡張する必要があります.
第2に、あなたは、メソッドaddObserverをInitstateに加えて、また、処分するためにremoveObserverを加えなければなりません.
最後に、関数didChangeAppLifecycleStateを実装し、この関数では、異なる状態を扱うコードを書きます.
以下のクラスの完全なコードを見つけることができます.
class HomePage extends StatefulWidget {

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  AppLifecycleState _notification;

  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    setState(() {
      if (state == AppLifecycleState.paused) {
        // Your Code goes here
      } else if (state == AppLifecycleState.inactive) {
        // Your Code goes here
      } else {
        // Your Code goes here
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text('Last notification: $_notification');
  }
}

それはすべての人々です!
このチュートリアルでは、我々はFlutterでモバイルアプリケーションのApplifecyClestate管理の実装を学んだ.私も理論部分を説明したので、それはあなたがより良い学習に役立ちます.
最後のコードでは、あなたのフラッターコードでそれを実装する方法を学びます.フラッターclick hereに関する私の他のチュートリアルをチェックするために.
あなたが実装中にどんな問題に直面しているか、より良い方法を知っているならば、コメントセクションで私に知らせてください.
AppLifeCycleState Management Implementation in Flutter年には、InstaCodeBlogが初めて登場した.