fix: Add back button on app bars of secondary views

This commit is contained in:
Alberto Ponces 2022-09-19 16:24:31 +01:00
parent 3e6e94c098
commit 2a2bb8212f
6 changed files with 64 additions and 13 deletions

View File

@ -37,12 +37,29 @@ class _AppSelectorViewState extends State<AppSelectorView> {
pinned: true,
floating: true,
snap: false,
title: I18nText('appSelectorView.viewTitle'),
title: I18nText(
'appSelectorView.viewTitle',
child: Text(
'',
style: TextStyle(
color: Theme.of(context).textTheme.headline6!.color,
),
),
),
leading: IconButton(
icon: Icon(
Icons.arrow_back,
color: Theme.of(context).textTheme.headline6!.color,
),
onPressed: () => Navigator.of(context).pop(),
),
bottom: PreferredSize(
preferredSize: const Size.fromHeight(64.0),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 8.0, horizontal: 12.0),
vertical: 8.0,
horizontal: 12.0,
),
child: SearchBar(
showSelectIcon: false,
hintText: FlutterI18n.translate(
@ -66,8 +83,8 @@ class _AppSelectorViewState extends State<AppSelectorView> {
: model.apps.isEmpty
? const AppSkeletonLoader()
: Padding(
padding: const EdgeInsets.only(bottom: 80).add(
const EdgeInsets.symmetric(horizontal: 12.0)),
padding: const EdgeInsets.symmetric(horizontal: 12.0)
.copyWith(bottom: 80),
child: Column(
children: model
.getFilteredApps(_query)

View File

@ -28,6 +28,7 @@ class HomeView extends StatelessWidget {
child: CustomScrollView(
slivers: <Widget>[
CustomSliverAppBar(
isMainView: true,
title: I18nText(
'homeView.widgetTitle',
child: Text(

View File

@ -28,6 +28,7 @@ class PatcherView extends StatelessWidget {
body: CustomScrollView(
slivers: <Widget>[
CustomSliverAppBar(
isMainView: true,
title: I18nText(
'patcherView.widgetTitle',
child: Text(

View File

@ -39,12 +39,29 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
pinned: true,
floating: true,
snap: false,
title: I18nText('patchesSelectorView.viewTitle'),
title: I18nText(
'patchesSelectorView.viewTitle',
child: Text(
'',
style: TextStyle(
color: Theme.of(context).textTheme.headline6!.color,
),
),
),
leading: IconButton(
icon: Icon(
Icons.arrow_back,
color: Theme.of(context).textTheme.headline6!.color,
),
onPressed: () => Navigator.of(context).pop(),
),
bottom: PreferredSize(
preferredSize: const Size.fromHeight(64.0),
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 8.0, horizontal: 12.0),
vertical: 8.0,
horizontal: 12.0,
),
child: SearchBar(
showSelectIcon: true,
hintText: FlutterI18n.translate(
@ -76,8 +93,8 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
),
)
: Padding(
padding: const EdgeInsets.only(bottom: 80)
.add(const EdgeInsets.symmetric(horizontal: 12.0)),
padding: const EdgeInsets.symmetric(horizontal: 12.0)
.copyWith(bottom: 80),
child: Column(
children: model
.getQueriedPatches(_query)

View File

@ -24,6 +24,7 @@ class SettingsView extends StatelessWidget {
body: CustomScrollView(
slivers: <Widget>[
CustomSliverAppBar(
isMainView: true,
title: I18nText(
'settingsView.widgetTitle',
child: Text(

View File

@ -4,12 +4,14 @@ class CustomSliverAppBar extends StatelessWidget {
final Widget title;
final List<Widget>? actions;
final PreferredSizeWidget? bottom;
final bool isMainView;
const CustomSliverAppBar({
Key? key,
required this.title,
this.actions,
this.bottom,
this.isMainView = false,
}) : super(key: key);
@override
@ -19,16 +21,28 @@ class CustomSliverAppBar extends StatelessWidget {
snap: false,
floating: false,
expandedHeight: 100.0,
automaticallyImplyLeading: false,
automaticallyImplyLeading: !isMainView,
flexibleSpace: FlexibleSpaceBar(
titlePadding: EdgeInsets.only(
bottom: 14.0,
left: isMainView ? 20.0 : 55.0,
),
title: title,
),
leading: isMainView
? null
: IconButton(
icon: Icon(
Icons.arrow_back,
color: Theme.of(context).textTheme.headline6!.color,
),
onPressed: () => Navigator.of(context).pop(),
),
backgroundColor: MaterialStateColor.resolveWith(
(states) => states.contains(MaterialState.scrolledUnder)
? Theme.of(context).colorScheme.surface
: Theme.of(context).canvasColor,
),
flexibleSpace: FlexibleSpaceBar(
titlePadding: const EdgeInsets.only(bottom: 16.0, left: 20.0),
title: title,
),
actions: actions,
bottom: bottom,
);