Skip to content

Commit 215b51a

Browse files
committed
nav [nfc]: Support custom loading page with AccountPageRouteMixin
This preps for adding a special loading page for the home page. Signed-off-by: Zixuan James Li <[email protected]>
1 parent 63f8fe0 commit 215b51a

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

lib/widgets/page.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,13 @@ class MaterialWidgetRoute<T extends Object?> extends MaterialPageRoute<T> implem
3434
/// A mixin for providing a given account's per-account store on a page route.
3535
mixin AccountPageRouteMixin<T extends Object?> on PageRoute<T> {
3636
int get accountId;
37+
Widget? get loadingPlaceholderPage;
3738

3839
@override
3940
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
4041
return PerAccountStoreWidget(
4142
accountId: accountId,
42-
placeholder: const LoadingPlaceholderPage(),
43+
placeholder: loadingPlaceholderPage ?? const LoadingPlaceholderPage(),
4344
routeToRemoveOnLogout: this,
4445
child: super.buildPage(context, animation, secondaryAnimation));
4546
}
@@ -67,6 +68,7 @@ class MaterialAccountPageRoute<T extends Object?> extends MaterialPageRoute<T> w
6768
MaterialAccountPageRoute({
6869
int? accountId,
6970
BuildContext? context,
71+
this.loadingPlaceholderPage,
7072
required super.builder,
7173
super.settings,
7274
super.maintainState,
@@ -78,6 +80,9 @@ class MaterialAccountPageRoute<T extends Object?> extends MaterialPageRoute<T> w
7880

7981
@override
8082
final int accountId;
83+
84+
@override
85+
final Widget? loadingPlaceholderPage;
8186
}
8287

8388
/// A [MaterialPageRoute] that provides a per-account store for a given account
@@ -105,6 +110,7 @@ class MaterialAccountWidgetRoute<T extends Object?> extends MaterialAccountPageR
105110
MaterialAccountWidgetRoute({
106111
super.accountId,
107112
super.context,
113+
super.loadingPlaceholderPage,
108114
required this.page,
109115
super.settings,
110116
super.maintainState,
@@ -134,6 +140,7 @@ class AccountPageRouteBuilder<T extends Object?> extends PageRouteBuilder<T> wit
134140
AccountPageRouteBuilder({
135141
int? accountId,
136142
BuildContext? context,
143+
this.loadingPlaceholderPage,
137144
super.settings,
138145
required super.pageBuilder,
139146
super.transitionsBuilder,
@@ -152,6 +159,9 @@ class AccountPageRouteBuilder<T extends Object?> extends PageRouteBuilder<T> wit
152159

153160
@override
154161
final int accountId;
162+
163+
@override
164+
final Widget? loadingPlaceholderPage;
155165
}
156166

157167
class LoadingPlaceholderPage extends StatelessWidget {

0 commit comments

Comments
 (0)