Skip to content

Commit 5d6614f

Browse files
committed
#336: added center title logic
1 parent 47f8ca2 commit 5d6614f

File tree

3 files changed

+55
-26
lines changed

3 files changed

+55
-26
lines changed

lib/repository/secure_storage/secure_storage.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ abstract class SecureStorage implements SimpleKeyValueStorage {
2121
class _SecureStorage implements SecureStorage {
2222
final FlutterSecureStorage _storage;
2323

24-
final iOSOptions = const IOSOptions(accessibility: KeychainAccessibility.first_unlock);
24+
final iOSOptions = const IOSOptions(accessibility: KeychainAccessibility.unlocked);
2525

2626
_SecureStorage(this._storage);
2727

lib/screen/todo/todo_list/todo_list_screen.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import 'package:flutter_template/styles/theme_dimens.dart';
66
import 'package:flutter_template/util/keys.dart';
77
import 'package:flutter_template/viewmodel/todo/todo_list/todo_list_viewmodel.dart';
88
import 'package:flutter_template/widget/general/action/action_item.dart';
9-
import 'package:flutter_template/widget/general/simple_screen/simple_screen.dart';
9+
import 'package:flutter_template/widget/general/simple_screen/base_screen.dart';
1010
import 'package:flutter_template/widget/general/styled/flutter_template_progress_indicator.dart';
1111
import 'package:flutter_template/widget/provider/provider_widget.dart';
1212
import 'package:flutter_template/widget/todo/todo_row_item.dart';
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
import 'package:flutter/material.dart';
2+
import 'package:flutter_template/util/platform/platform_util.dart';
3+
import 'package:flutter_template/widget/general/simple_screen/base_screen_header_safe_area.dart';
24
import 'package:flutter_template/widget/general/styled/flutter_template_back_button.dart';
35
import 'package:flutter_template/widget/provider/data_provider_widget.dart';
46

57
class BaseScreenHeader extends StatelessWidget {
8+
final bool? centerTitle;
69
final String? title;
710
final List<Widget> trailingItems;
811
final VoidCallback? onBackTapped;
912

1013
const BaseScreenHeader({
1114
this.onBackTapped,
15+
this.centerTitle,
1216
this.title,
1317
this.trailingItems = const [],
1418
super.key,
@@ -17,33 +21,58 @@ class BaseScreenHeader extends StatelessWidget {
1721
@override
1822
Widget build(BuildContext context) {
1923
return DataProviderWidget(
20-
childBuilder: (context, theme, localization) => Container(
21-
padding: const EdgeInsets.symmetric(
22-
horizontal: 16,
23-
vertical: 12,
24-
),
25-
color: theme.colorsTheme.primary,
26-
child: SafeArea(
27-
bottom: false,
28-
child: Row(
29-
children: [
30-
if (ModalRoute.of(context)?.impliesAppBarDismissal ?? false) ...[
31-
FlutterTemplateBackButton.light(onClick: onBackTapped),
32-
const SizedBox(width: 24),
33-
],
34-
if (title != null) ...[
35-
Expanded(
36-
child: Text(
37-
title!.toUpperCase(),
38-
style: theme.inverseCoreTextTheme.bodyNormal,
39-
),
24+
childBuilder: (context, theme, localization) {
25+
final leading = [
26+
if (ModalRoute.of(context)?.impliesAppBarDismissal ?? false) ...[
27+
FlutterTemplateBackButton.light(onClick: onBackTapped),
28+
const SizedBox(width: 24),
29+
],
30+
];
31+
final isTitleCentered = centerTitle ?? PlatformUtil.isIOS;
32+
final titleWidget = title == null
33+
? null
34+
: Text(
35+
title!.toUpperCase(),
36+
style: theme.inverseCoreTextTheme.bodyNormal,
37+
textAlign: isTitleCentered ? TextAlign.center : TextAlign.start,
38+
);
39+
40+
return Container(
41+
padding: const EdgeInsets.symmetric(
42+
horizontal: 16,
43+
vertical: 12,
44+
),
45+
color: theme.colorsTheme.primary,
46+
child: SafeArea(
47+
bottom: false,
48+
child: Stack(
49+
alignment: Alignment.center,
50+
children: [
51+
Row(
52+
children: [
53+
...leading,
54+
if (titleWidget != null && !isTitleCentered) ...[
55+
Expanded(
56+
child: titleWidget,
57+
),
58+
] else ...[
59+
const Spacer(),
60+
],
61+
...trailingItems,
62+
],
4063
),
64+
if (isTitleCentered && titleWidget != null) ...[
65+
BaseScreenHeaderSafeArea(
66+
leading: leading,
67+
actions: trailingItems,
68+
child: titleWidget,
69+
),
70+
]
4171
],
42-
...trailingItems,
43-
],
72+
),
4473
),
45-
),
46-
),
74+
);
75+
},
4776
);
4877
}
4978
}

0 commit comments

Comments
 (0)