// 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/material.dart'; /// Flutter code sample for [WidgetBindingsObserver]. void main() => runApp(const WidgetBindingObserverExampleApp()); class WidgetBindingObserverExampleApp extends StatelessWidget { const WidgetBindingObserverExampleApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('WidgetBindingsObserver Sample')), body: const WidgetBindingsObserverSample(), ), ); } } class WidgetBindingsObserverSample extends StatefulWidget { const WidgetBindingsObserverSample({super.key}); @override State<WidgetBindingsObserverSample> createState() => _WidgetBindingsObserverSampleState(); } class _WidgetBindingsObserverSampleState extends State<WidgetBindingsObserverSample> with WidgetsBindingObserver { final List<AppLifecycleState> _stateHistoryList = <AppLifecycleState>[]; @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); if (WidgetsBinding.instance.lifecycleState != null) { _stateHistoryList.add(WidgetsBinding.instance.lifecycleState!); } } @override void didChangeAppLifecycleState(AppLifecycleState state) { setState(() { _stateHistoryList.add(state); }); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override Widget build(BuildContext context) { if (_stateHistoryList.isNotEmpty) { return ListView.builder( key: const ValueKey<String>('stateHistoryList'), itemCount: _stateHistoryList.length, itemBuilder: (BuildContext context, int index) { return Text('state is: ${_stateHistoryList[index]}'); }, ); } return const Center(child: Text('There are no AppLifecycleStates to show.')); } }