// 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'; import 'use_cases.dart'; class AppBarUseCase extends UseCase { @override String get name => 'AppBar'; @override String get route => '/app-bar'; @override Widget build(BuildContext context) => const MainWidget(); } class MainWidget extends StatefulWidget { const MainWidget({super.key}); @override State createState() => MainWidgetState(); } class MainWidgetState extends State { int currentIndex = 0; void _onChanged(int? value) { setState(() { currentIndex = value!; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: [ AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Semantics(headingLevel: 1, child: const Text('AppBar')), ), AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Semantics(headingLevel: 1, child: const Text('AppBar')), actions: [ IconButton( icon: const Icon(Icons.add_alert), tooltip: 'Show Snackbar', onPressed: () { ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('This is a snackbar'))); }, ), IconButton( icon: const Icon(Icons.navigate_next), tooltip: 'Go to the next page', onPressed: () { Navigator.push(context, MaterialPageRoute( builder: (BuildContext context) { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Semantics(headingLevel: 1, child: const Text('Next Page')), ), body: const Center( child: Text( 'This is the next page', style: TextStyle(fontSize: 24), ), ), ); }, )); }, ), ], ), AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Semantics(headingLevel: 1, child: const Text('AppBar')), actions: [ TextButton( onPressed: () {}, child: const Text('Action 1'), ), TextButton( onPressed: () {}, child: const Text('Action 2'), ), ], ), ][currentIndex], body: ListView( children: [ RadioListTile( title: const Text('1. Simple app bar'), value: 0, groupValue: currentIndex, onChanged: _onChanged, ), RadioListTile( title: const Text('2. App bar with actions'), value: 1, groupValue: currentIndex, onChanged: _onChanged, ), RadioListTile( title: const Text('3. App bar with text buttons'), value: 2, groupValue: currentIndex, onChanged: _onChanged, ), ], ), ); } }