@@ -26,54 +26,87 @@ class CupertinoAppBarControl extends StatelessWidget
26
26
@override
27
27
Widget build(BuildContext context) {
28
28
debugPrint("CupertinoAppBar build: ${control.id}");
29
+ var large = control.attrBool("large", false)!;
29
30
30
- var leadingCtrls = children.where((c) => c.name == "leading" && c.visible);
31
+ var leadingCtrls =
32
+ children.where((c) => c.name == "leading" && c.isVisible);
31
33
32
- // if the material AppBar was used with adaptive=True, AppBar.title will be used as middle control
33
- var middleCtrls = children
34
- .where((c) => (c.name == "middle " || c.name == "title ") && c.visible );
34
+ // "middle" is deprecated in v0.27.0 and will be removed in v0.30.0, use "title" instead
35
+ var titleCtrls = children
36
+ .where((c) => (c.name == "title " || c.name == "middle ") && c.isVisible );
35
37
36
38
// if the material AppBar was used with adaptive=True, AppBar.actions[0] will be used as trailing control
37
39
var trailingCtrls = children.where(
38
- (c) => (c.name == "trailing" || c.name == "action") && c.visible );
40
+ (c) => (c.name == "trailing" || c.name == "action") && c.isVisible );
39
41
40
- var bar = CupertinoNavigationBar(
41
- leading: leadingCtrls.isNotEmpty
42
- ? createControl(control, leadingCtrls.first.id, control.disabled,
43
- parentAdaptive: parentAdaptive)
44
- : null,
45
- automaticallyImplyLeading:
46
- control.getBool("automaticallyImplyLeading", true)!,
47
- automaticallyImplyMiddle:
48
- control.getBool("automaticallyImplyMiddle", true)!,
49
- transitionBetweenRoutes:
50
- control.getBool("transitionBetweenRoutes", true)!,
51
- border: parseBorder(Theme.of(context), control, "border"),
52
- previousPageTitle: control.getString("previousPageTitle"),
53
- padding: parseEdgeInsetsDirectional(control, "padding"),
54
- backgroundColor: control.getColor("bgcolor", context),
55
- automaticBackgroundVisibility:
56
- control.getBool("automaticBackgroundVisibility", true)!,
57
- enableBackgroundFilterBlur:
58
- control.getBool("backgroundFilterBlur", true)!,
59
- brightness: parseBrightness(control.getString("brightness")),
60
- middle: middleCtrls.isNotEmpty
61
- ? createControl(control, middleCtrls.first.id, control.disabled,
62
- parentAdaptive: parentAdaptive)
63
- : null,
64
- trailing: trailingCtrls.length == 1
65
- ? createControl(control, trailingCtrls.first.id, control.disabled,
66
- parentAdaptive: parentAdaptive)
67
- : trailingCtrls.length > 1
68
- ? Row(
69
- mainAxisSize: MainAxisSize.min,
70
- children: trailingCtrls
71
- .map((c) => createControl(control, c.id, control.disabled,
72
- parentAdaptive: parentAdaptive))
73
- .toList(),
74
- )
75
- : null,
76
- );
42
+ var leading = leadingCtrls.isNotEmpty
43
+ ? createControl(control, leadingCtrls.first.id, control.isDisabled,
44
+ parentAdaptive: parentAdaptive)
45
+ : null;
46
+
47
+ var automaticallyImplyLeading =
48
+ control.attrBool("automaticallyImplyLeading", true)!;
49
+ var automaticallyImplyTitle =
50
+ control.attrBool("automaticallyImplyTitle", control.attrBool("automaticallyImplyMiddle", true)!)!;
51
+ var transitionBetweenRoutes =
52
+ control.attrBool("transitionBetweenRoutes", true)!;
53
+ var border = parseBorder(Theme.of(context), control, "border");
54
+ var previousPageTitle = control.attrString("previousPageTitle");
55
+ var padding = parseEdgeInsetsDirectional(control, "padding");
56
+ var backgroundColor = control.attrColor("bgcolor", context);
57
+ var automaticBackgroundVisibility =
58
+ control.attrBool("automaticBackgroundVisibility", true)!;
59
+ var enableBackgroundFilterBlur =
60
+ control.attrBool("backgroundFilterBlur", true)!;
61
+ var brightness = parseBrightness(control.attrString("brightness"));
62
+ var title = titleCtrls.isNotEmpty
63
+ ? createControl(control, titleCtrls.first.id, control.isDisabled,
64
+ parentAdaptive: parentAdaptive)
65
+ : null;
66
+ var trailing = trailingCtrls.length == 1
67
+ ? createControl(control, trailingCtrls.first.id, control.isDisabled,
68
+ parentAdaptive: parentAdaptive)
69
+ : trailingCtrls.length > 1
70
+ ? Row(
71
+ mainAxisSize: MainAxisSize.min,
72
+ children: trailingCtrls
73
+ .map((c) => createControl(control, c.id, control.isDisabled,
74
+ parentAdaptive: parentAdaptive))
75
+ .toList(),
76
+ )
77
+ : null;
78
+
79
+ var bar = large
80
+ ? CupertinoNavigationBar.large(
81
+ leading: leading,
82
+ automaticallyImplyLeading: automaticallyImplyLeading,
83
+ transitionBetweenRoutes: transitionBetweenRoutes,
84
+ border: border,
85
+ previousPageTitle: previousPageTitle,
86
+ padding: padding,
87
+ backgroundColor: backgroundColor,
88
+ automaticBackgroundVisibility: automaticBackgroundVisibility,
89
+ enableBackgroundFilterBlur: enableBackgroundFilterBlur,
90
+ brightness: brightness,
91
+ trailing: trailing,
92
+ largeTitle: title,
93
+ automaticallyImplyTitle: automaticallyImplyTitle,
94
+ )
95
+ : CupertinoNavigationBar(
96
+ leading: leading,
97
+ automaticallyImplyLeading: automaticallyImplyLeading,
98
+ automaticallyImplyMiddle: automaticallyImplyTitle,
99
+ transitionBetweenRoutes: transitionBetweenRoutes,
100
+ border: border,
101
+ previousPageTitle: previousPageTitle,
102
+ padding: padding,
103
+ backgroundColor: backgroundColor,
104
+ automaticBackgroundVisibility: automaticBackgroundVisibility,
105
+ enableBackgroundFilterBlur: enableBackgroundFilterBlur,
106
+ brightness: brightness,
107
+ middle: title,
108
+ trailing: trailing,
109
+ );
77
110
return baseControl(context, bar, parent, control);
78
111
}
79
112
@@ -85,7 +118,7 @@ class CupertinoAppBarControl extends StatelessWidget
85
118
@override
86
119
bool shouldFullyObstruct(BuildContext context) {
87
120
final Color backgroundColor = CupertinoDynamicColor.maybeResolve(
88
- control.getColor ("bgcolor", context), context) ??
121
+ control.attrColor ("bgcolor", context), context) ??
89
122
CupertinoTheme.of(context).barBackgroundColor;
90
123
return backgroundColor.alpha == 0xFF;
91
124
}
0 commit comments