|  | // Copyright 2014 The Flutter Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | import 'package:flutter/widgets.dart'; | 
|  |  | 
|  | class LifecycleWatcher extends StatefulWidget { | 
|  | const LifecycleWatcher({ Key key }) : super(key: key); | 
|  |  | 
|  | @override | 
|  | _LifecycleWatcherState createState() => _LifecycleWatcherState(); | 
|  | } | 
|  |  | 
|  | class _LifecycleWatcherState extends State<LifecycleWatcher> | 
|  | with WidgetsBindingObserver { | 
|  | AppLifecycleState _lastLifecycleState; | 
|  |  | 
|  | @override | 
|  | void initState() { | 
|  | super.initState(); | 
|  | WidgetsBinding.instance.addObserver(this); | 
|  | } | 
|  |  | 
|  | @override | 
|  | void dispose() { | 
|  | WidgetsBinding.instance.removeObserver(this); | 
|  | super.dispose(); | 
|  | } | 
|  |  | 
|  | @override | 
|  | void didChangeAppLifecycleState(AppLifecycleState state) { | 
|  | setState(() { | 
|  | _lastLifecycleState = state; | 
|  | }); | 
|  | } | 
|  |  | 
|  | @override | 
|  | Widget build(BuildContext context) { | 
|  | if (_lastLifecycleState == null) | 
|  | return const Text('This widget has not observed any lifecycle changes.'); | 
|  | return Text('The most recent lifecycle state this widget observed was: $_lastLifecycleState.'); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | void main() { | 
|  | runApp( | 
|  | const Directionality( | 
|  | textDirection: TextDirection.ltr, | 
|  | child: Center( | 
|  | child: LifecycleWatcher(), | 
|  | ), | 
|  | ), | 
|  | ); | 
|  | } |