phase3(critical-path): store + main + routes + nav components null-safe

- store/state + reducers: nullable AppState fields & reducer types
- main.dart: localeResolutionCallback Locale?, settings.name? guard
- routes.dart: fluro 2.0.5 HandlerFunc (BuildContext?) + params['x']!
- navigationbar/breadcrumbs/bottom_nav/text_link: nullable optional params/fields
This commit is contained in:
2026-07-24 13:37:04 +08:00
parent cef00db911
commit ae4c4046c3
6 changed files with 106 additions and 102 deletions

View File

@@ -7,10 +7,10 @@ import '../../routes.dart';
import 'navigationbar.dart';
class BreadCrumbs extends StatelessWidget {
final List<BreadCrumb> breadCrumbs;
final List<BreadCrumb>? breadCrumbs;
final bool hasBack;
final OnBackPress onBackPress;
const BreadCrumbs(this.hasBack, {this.breadCrumbs, Key key, this.onBackPress}) : super(key: key);
final OnBackPress? onBackPress;
const BreadCrumbs(this.hasBack, {this.breadCrumbs, Key? key, this.onBackPress}) : super(key: key);
@override
Widget build(BuildContext context) {
@@ -49,11 +49,11 @@ class BreadCrumbs extends StatelessWidget {
));
}
if (breadCrumbs != null) {
for (int i = 0; i < breadCrumbs.length; i++) {
BreadCrumb breadCrumb = breadCrumbs[i];
for (int i = 0; i < breadCrumbs!.length; i++) {
BreadCrumb breadCrumb = breadCrumbs![i];
if (breadCrumb.text == null && breadCrumb.item != null) {
if (breadCrumb.onTap == null) {
widgets.add(breadCrumb.item);
widgets.add(breadCrumb.item!);
} else {
widgets.add(MouseRegion(
cursor: SystemMouseCursors.click,
@@ -186,9 +186,9 @@ class BreadCrumbs extends StatelessWidget {
class BreadCrumb {
final String text;
final String route;
final IconData icon;
final Widget item;
final Function onTap;
final IconData? icon;
final Widget? item;
final GestureTapCallback? onTap;
BreadCrumb(this.text, this.route, {this.icon, this.item, this.onTap});
}