standardize all backbtns to use AppHeader widget

This commit is contained in:
Shawn 2022-12-22 10:36:46 -07:00
parent 8b997644ab
commit 77ecacabf7
8 changed files with 30 additions and 29 deletions

View File

@ -1,4 +1,5 @@
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/ui/common/app_icons.dart';
class AppHeader extends StatelessWidget { class AppHeader extends StatelessWidget {
const AppHeader( const AppHeader(
@ -8,11 +9,15 @@ class AppHeader extends StatelessWidget {
this.showBackBtn = true, this.showBackBtn = true,
this.isTransparent = false, this.isTransparent = false,
this.onBack, this.onBack,
this.trailing}) this.trailing,
this.backIcon = AppIcons.prev,
this.backBtnSemantics})
: super(key: key); : super(key: key);
final String? title; final String? title;
final String? subtitle; final String? subtitle;
final bool showBackBtn; final bool showBackBtn;
final AppIcons backIcon;
final String? backBtnSemantics;
final bool isTransparent; final bool isTransparent;
final VoidCallback? onBack; final VoidCallback? onBack;
final Widget Function(BuildContext context)? trailing; final Widget Function(BuildContext context)? trailing;
@ -31,7 +36,12 @@ class AppHeader extends StatelessWidget {
child: Center( child: Center(
child: Row(children: [ child: Row(children: [
Gap($styles.insets.sm), Gap($styles.insets.sm),
if (showBackBtn) BackBtn(onPressed: onBack), if (showBackBtn)
BackBtn(
onPressed: onBack,
icon: backIcon,
semanticLabel: backBtnSemantics,
),
Spacer(), Spacer(),
if (trailing != null) trailing!.call(context), if (trailing != null) trailing!.call(context),
Gap($styles.insets.sm), Gap($styles.insets.sm),

View File

@ -1,6 +1,7 @@
import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/wonder_data.dart'; import 'package:wonders/logic/data/wonder_data.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/google_maps_marker.dart'; import 'package:wonders/ui/common/google_maps_marker.dart';
class FullscreenMapsViewer extends StatelessWidget { class FullscreenMapsViewer extends StatelessWidget {
@ -20,7 +21,7 @@ class FullscreenMapsViewer extends StatelessWidget {
initialCameraPosition: startPos, initialCameraPosition: startPos,
myLocationButtonEnabled: false, myLocationButtonEnabled: false,
), ),
BackBtn().safe(), AppHeader(isTransparent: true),
], ],
); );
} }

View File

@ -1,4 +1,5 @@
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/utils/app_haptics.dart'; import 'package:wonders/ui/common/utils/app_haptics.dart';
class FullscreenUrlImgViewer extends StatefulWidget { class FullscreenUrlImgViewer extends StatefulWidget {
@ -52,7 +53,7 @@ class _FullscreenUrlImgViewerState extends State<FullscreenUrlImgViewer> {
child: Stack( child: Stack(
children: [ children: [
Positioned.fill(child: content), Positioned.fill(child: content),
BackBtn.close(onPressed: _handleBackPressed).safe(), AppHeader(onBack: _handleBackPressed, isTransparent: true),
], ],
), ),
); );

View File

@ -1,6 +1,7 @@
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/artifact_data.dart'; import 'package:wonders/logic/data/artifact_data.dart';
import 'package:wonders/ui/common/compass_divider.dart'; import 'package:wonders/ui/common/compass_divider.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/controls/app_loading_indicator.dart'; import 'package:wonders/ui/common/controls/app_loading_indicator.dart';
import 'package:wonders/ui/common/gradient_container.dart'; import 'package:wonders/ui/common/gradient_container.dart';
import 'package:wonders/ui/common/modals/fullscreen_url_img_viewer.dart'; import 'package:wonders/ui/common/modals/fullscreen_url_img_viewer.dart';
@ -56,7 +57,7 @@ class _ArtifactDetailsScreenState extends State<ArtifactDetailsScreen> {
return Stack(children: [ return Stack(children: [
content, content,
BackBtn().safe(), AppHeader(isTransparent: true),
]); ]);
}, },
), ),

View File

@ -3,6 +3,7 @@ import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/collectible_data.dart'; import 'package:wonders/logic/data/collectible_data.dart';
import 'package:wonders/ui/common/app_backdrop.dart'; import 'package:wonders/ui/common/app_backdrop.dart';
import 'package:wonders/ui/common/centered_box.dart'; import 'package:wonders/ui/common/centered_box.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/pop_navigator_underlay.dart'; import 'package:wonders/ui/common/pop_navigator_underlay.dart';
part 'widgets/_animated_ribbon.dart'; part 'widgets/_animated_ribbon.dart';
@ -91,7 +92,7 @@ class CollectibleFoundScreen extends StatelessWidget {
), ),
), ),
), ),
BackBtn.close().safe().animate().fade(delay: t * 4, duration: t * 2), AppHeader(isTransparent: true).animate().fade(delay: t * 4, duration: t * 2),
]); ]);
} }

View File

@ -1,6 +1,7 @@
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/wonder_data.dart'; import 'package:wonders/logic/data/wonder_data.dart';
import 'package:wonders/ui/common/app_icons.dart'; import 'package:wonders/ui/common/app_icons.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/controls/app_page_indicator.dart'; import 'package:wonders/ui/common/controls/app_page_indicator.dart';
import 'package:wonders/ui/common/gradient_container.dart'; import 'package:wonders/ui/common/gradient_container.dart';
import 'package:wonders/ui/common/themed_text.dart'; import 'package:wonders/ui/common/themed_text.dart';
@ -324,12 +325,11 @@ class _HomeScreenState extends State<HomeScreen> with SingleTickerProviderStateM
child: AnimatedOpacity( child: AnimatedOpacity(
duration: $styles.times.fast, duration: $styles.times.fast,
opacity: _isMenuOpen ? 0 : 1, opacity: _isMenuOpen ? 0 : 1,
child: MergeSemantics( child: AppHeader(
child: CircleIconBtn( backIcon: AppIcons.menu,
icon: AppIcons.menu, backBtnSemantics: $strings.homeSemanticOpenMain,
onPressed: _handleOpenMenuPressed, onBack: _handleOpenMenuPressed,
semanticLabel: $strings.homeSemanticOpenMain, isTransparent: true,
).safe(),
), ),
), ),
), ),

View File

@ -4,6 +4,7 @@ import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/data/wonder_data.dart'; import 'package:wonders/logic/data/wonder_data.dart';
import 'package:wonders/ui/common/app_backdrop.dart'; import 'package:wonders/ui/common/app_backdrop.dart';
import 'package:wonders/ui/common/app_icons.dart'; import 'package:wonders/ui/common/app_icons.dart';
import 'package:wonders/ui/common/controls/app_header.dart';
import 'package:wonders/ui/common/controls/locale_switcher.dart'; import 'package:wonders/ui/common/controls/locale_switcher.dart';
import 'package:wonders/ui/common/pop_navigator_underlay.dart'; import 'package:wonders/ui/common/pop_navigator_underlay.dart';
import 'package:wonders/ui/screens/home_menu/about_dialog_content.dart'; import 'package:wonders/ui/screens/home_menu/about_dialog_content.dart';
@ -58,22 +59,9 @@ class _HomeMenuState extends State<HomeMenu> {
PopNavigatorUnderlay(), PopNavigatorUnderlay(),
SafeArea( AppHeader(
child: PaddedRow( isTransparent: true,
padding: EdgeInsets.symmetric( trailing: (_) => LocaleSwitcher(),
horizontal: $styles.insets.md,
vertical: $styles.insets.sm,
),
children: [
/// Back btn
BackBtn.close(
bgColor: Colors.transparent,
iconColor: $styles.colors.offWhite,
),
Spacer(),
LocaleSwitcher()
],
),
), ),
/// Content /// Content

View File

@ -134,7 +134,6 @@ class _PhotoGalleryState extends State<PhotoGallery> {
if (value.isEmpty) { if (value.isEmpty) {
return Center(child: AppLoadingIndicator()); return Center(child: AppLoadingIndicator());
} }
Size imgSize = context.isLandscape Size imgSize = context.isLandscape
? Size(context.widthPx * .5, context.heightPx * .66) ? Size(context.widthPx * .5, context.heightPx * .66)
: Size(context.widthPx * .66, context.heightPx * .5); : Size(context.widthPx * .66, context.heightPx * .5);