phase3(critical-path): home page chain null-safe
home.dart + desktop/mobile navigation, carousels, index content widgets, customers_logo, appbar_menu, navigation_drawer, MobileBottomNav, double_back. Fixes: Key? params, nullable State fields, Scrollbar thumbVisibility, ModalRoute.of()?, badges hide Badge, cartInfos local promotion.
This commit is contained in:
@@ -34,7 +34,7 @@ import '../widgets/mobile/mobile_navigation_drawer.dart';
|
|||||||
class Home extends StatefulWidget {
|
class Home extends StatefulWidget {
|
||||||
final String title;
|
final String title;
|
||||||
|
|
||||||
Home({Key key, this.title = ''}) : super(key: key);
|
Home({Key? key, this.title = ''}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
@@ -46,11 +46,11 @@ class Home extends StatefulWidget {
|
|||||||
class HomeState extends State<Home> {
|
class HomeState extends State<Home> {
|
||||||
final _scaffoldKey = GlobalKey<ScaffoldState>();
|
final _scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
List<Gallery> galleries = [];
|
List<Gallery> galleries = [];
|
||||||
String content1Message;
|
String? content1Message;
|
||||||
Map<String, dynamic> content2;
|
Map<String, dynamic>? content2;
|
||||||
|
|
||||||
StreamSubscription _sub;
|
StreamSubscription? _sub;
|
||||||
Uri _latestUri;
|
Uri? _latestUri;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -80,9 +80,9 @@ class HomeState extends State<Home> {
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
MobileIndexCarousel(galleries),
|
MobileIndexCarousel(galleries),
|
||||||
MobileIndexMainContent1(content1Message),
|
MobileIndexMainContent1(content1Message ?? ''),
|
||||||
MobileIndexMainContent2(content2),
|
MobileIndexMainContent2(content2 ?? <String, dynamic>{}),
|
||||||
MobileIndexMainContent3(content2),
|
MobileIndexMainContent3(content2 ?? <String, dynamic>{}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -91,24 +91,24 @@ class HomeState extends State<Home> {
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
DesktopIndexCarousel(galleries),
|
DesktopIndexCarousel(galleries),
|
||||||
DesktopIndexMainContent1(content1Message),
|
DesktopIndexMainContent1(content1Message ?? ''),
|
||||||
DesktopIndexMainContent2(content2),
|
DesktopIndexMainContent2(content2 ?? <String, dynamic>{}),
|
||||||
CustomersLogo(),
|
CustomersLogo(),
|
||||||
DesktopIndexMainContent3(content2),
|
DesktopIndexMainContent3(content2 ?? <String, dynamic>{}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
desktop: Scrollbar(
|
desktop: Scrollbar(
|
||||||
isAlwaysShown: true,
|
thumbVisibility: true,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
DesktopIndexCarousel(galleries),
|
DesktopIndexCarousel(galleries),
|
||||||
DesktopIndexMainContent1(content1Message),
|
DesktopIndexMainContent1(content1Message ?? ''),
|
||||||
DesktopIndexMainContent2(content2),
|
DesktopIndexMainContent2(content2 ?? <String, dynamic>{}),
|
||||||
CustomersLogo(),
|
CustomersLogo(),
|
||||||
DesktopIndexMainContent3(content2),
|
DesktopIndexMainContent3(content2 ?? <String, dynamic>{}),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -136,7 +136,7 @@ class HomeState extends State<Home> {
|
|||||||
_loadData();
|
_loadData();
|
||||||
eventBus.on<OpenDrawer>().listen((event) {
|
eventBus.on<OpenDrawer>().listen((event) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
_scaffoldKey.currentState.openDrawer();
|
_scaffoldKey.currentState?.openDrawer();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||||||
@@ -163,7 +163,7 @@ class HomeState extends State<Home> {
|
|||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
_latestUri = Uri.base;
|
_latestUri = Uri.base;
|
||||||
print('uri base $_latestUri');
|
print('uri base $_latestUri');
|
||||||
eventBus.fire(OnGotDeepLinkUri(_latestUri));
|
eventBus.fire(OnGotDeepLinkUri(_latestUri!));
|
||||||
} else {
|
} else {
|
||||||
// _sub = getUriLinksStream().listen((Uri uri) {
|
// _sub = getUriLinksStream().listen((Uri uri) {
|
||||||
// print('_sub should get uri $uri');
|
// print('_sub should get uri $uri');
|
||||||
@@ -189,7 +189,7 @@ class HomeState extends State<Home> {
|
|||||||
//
|
//
|
||||||
// if (!mounted) return;
|
// if (!mounted) return;
|
||||||
// _latestUri = initialUri;
|
// _latestUri = initialUri;
|
||||||
// eventBus.fire(OnGotDeepLinkUri(_latestUri));
|
// eventBus.fire(OnGotDeepLinkUri(_latestUri!));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
class DesktopIndexCarousel extends StatefulWidget {
|
class DesktopIndexCarousel extends StatefulWidget {
|
||||||
final List<Gallery> galleries;
|
final List<Gallery> galleries;
|
||||||
|
|
||||||
const DesktopIndexCarousel(this.galleries, {Key key}) : super(key: key);
|
const DesktopIndexCarousel(this.galleries, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
@@ -53,8 +53,8 @@ class DesktopIndexCarouselState extends State<DesktopIndexCarousel> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (i.linkUrl != null && i.linkUrl.isNotEmpty) {
|
if (i.linkUrl?.isNotEmpty == true) {
|
||||||
Util.openWebUrl(context, i.linkUrl);
|
Util.openWebUrl(context, i.linkUrl!);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import '../../widgets/general/navigationbar_logo.dart';
|
|||||||
import '../../widgets/general/text_link.dart';
|
import '../../widgets/general/text_link.dart';
|
||||||
|
|
||||||
class DesktopAppBarMenu extends StatelessWidget {
|
class DesktopAppBarMenu extends StatelessWidget {
|
||||||
User _user;
|
User? _user;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
_user = store.state.user;
|
_user = store.state.user;
|
||||||
String currentRoute = ModalRoute.of(context).settings.name;
|
String currentRoute = ModalRoute.of(context)?.settings.name ?? '';
|
||||||
Widget menuBar = Container(
|
Widget menuBar = Container(
|
||||||
height: 56.0,
|
height: 56.0,
|
||||||
padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5.0, bottom: 5.0),
|
padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5.0, bottom: 5.0),
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
|
|
||||||
class CustomersLogo extends StatefulWidget {
|
class CustomersLogo extends StatefulWidget {
|
||||||
|
|
||||||
const CustomersLogo({Key key}) : super(key: key);
|
const CustomersLogo({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => CustomersLogoState();
|
State<StatefulWidget> createState() => CustomersLogoState();
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import 'package:flutter_wisetronic/generated/l10n.dart';
|
|||||||
|
|
||||||
class DesktopIndexMainContent1 extends StatefulWidget {
|
class DesktopIndexMainContent1 extends StatefulWidget {
|
||||||
final String message;
|
final String message;
|
||||||
const DesktopIndexMainContent1(this.message, {Key key}) : super(key: key);
|
const DesktopIndexMainContent1(this.message, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
|
|
||||||
class DesktopIndexMainContent2 extends StatefulWidget {
|
class DesktopIndexMainContent2 extends StatefulWidget {
|
||||||
final Map<String, dynamic> content;
|
final Map<String, dynamic> content;
|
||||||
const DesktopIndexMainContent2(this.content, {Key key}) : super(key: key);
|
const DesktopIndexMainContent2(this.content, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import '../../constants.dart';
|
|||||||
|
|
||||||
class DesktopIndexMainContent3 extends StatefulWidget {
|
class DesktopIndexMainContent3 extends StatefulWidget {
|
||||||
final Map<String, dynamic> content;
|
final Map<String, dynamic> content;
|
||||||
const DesktopIndexMainContent3(this.content, {Key key}) : super(key: key);
|
const DesktopIndexMainContent3(this.content, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ import '../../widgets/general/breadcrumbs.dart';
|
|||||||
import '../../widgets/general/navigationbar.dart';
|
import '../../widgets/general/navigationbar.dart';
|
||||||
|
|
||||||
class DesktopNavigationBar extends StatefulWidget {
|
class DesktopNavigationBar extends StatefulWidget {
|
||||||
final bool hasBack;
|
final bool? hasBack;
|
||||||
final List<BreadCrumb> breadCrumbs;
|
final List<BreadCrumb>? breadCrumbs;
|
||||||
final Widget shoppingCart;
|
final Widget? shoppingCart;
|
||||||
final OnBackPress onBackPress;
|
final OnBackPress? onBackPress;
|
||||||
|
|
||||||
const DesktopNavigationBar({Key key, this.hasBack, this.breadCrumbs,
|
const DesktopNavigationBar({Key? key, this.hasBack, this.breadCrumbs,
|
||||||
this.shoppingCart, this.onBackPress}) : super(key: key);
|
this.shoppingCart, this.onBackPress}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -30,16 +30,16 @@ class DesktopNavigationBar extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DesktopNavigationBarState extends State<DesktopNavigationBar> {
|
class DesktopNavigationBarState extends State<DesktopNavigationBar> {
|
||||||
User _user;
|
User? _user;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
Widget sc = SizedBox.shrink();
|
Widget sc = SizedBox.shrink();
|
||||||
if (widget.shoppingCart != null) {
|
if (widget.shoppingCart != null) {
|
||||||
sc = widget.shoppingCart;
|
sc = widget.shoppingCart!;
|
||||||
}
|
}
|
||||||
Widget breadCrumbBar = SizedBox.shrink();
|
Widget breadCrumbBar = SizedBox.shrink();
|
||||||
if (widget.breadCrumbs != null && widget.breadCrumbs.length > 0) {
|
if (widget.breadCrumbs != null && widget.breadCrumbs!.length > 0) {
|
||||||
breadCrumbBar = Container(
|
breadCrumbBar = Container(
|
||||||
width: MediaQuery.of(context).size.width,
|
width: MediaQuery.of(context).size.width,
|
||||||
height: Constants.BREADCRUMB_HEIGHT,
|
height: Constants.BREADCRUMB_HEIGHT,
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import '../../utils/double_back_to_close_app.dart';
|
|||||||
class DoubleBackToCloseAppWrapper extends StatelessWidget {
|
class DoubleBackToCloseAppWrapper extends StatelessWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
const DoubleBackToCloseAppWrapper({Key key, this.child}) : super(key: key);
|
const DoubleBackToCloseAppWrapper({Key? key, required this.child}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
import 'package:badges/badges.dart';
|
import 'package:badges/badges.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart' hide Badge;
|
||||||
import '../../constants.dart';
|
import '../../constants.dart';
|
||||||
import '../../generated/l10n.dart';
|
import '../../generated/l10n.dart';
|
||||||
import '../../routes.dart';
|
import '../../routes.dart';
|
||||||
@@ -15,10 +15,11 @@ class MobileBottomNav extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (store.state.cartInfos != null && store.state.cartInfos.length > 0) {
|
final cartInfos = store.state.cartInfos;
|
||||||
|
if (cartInfos != null && cartInfos.length > 0) {
|
||||||
count = 0;
|
count = 0;
|
||||||
for (var i = 0; i < store.state.cartInfos.length; i++) {
|
for (var i = 0; i < cartInfos.length; i++) {
|
||||||
if (store.state.cartInfos[i].productList != null && store.state.cartInfos[i].productList.length > 0) {
|
if (cartInfos[i].productList != null && cartInfos[i].productList!.length > 0) {
|
||||||
count += 1;
|
count += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
class MobileIndexCarousel extends StatefulWidget {
|
class MobileIndexCarousel extends StatefulWidget {
|
||||||
final List<Gallery> galleries;
|
final List<Gallery> galleries;
|
||||||
|
|
||||||
const MobileIndexCarousel(this.galleries, {Key key}) : super(key: key);
|
const MobileIndexCarousel(this.galleries, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
@@ -39,8 +39,8 @@ class MobileIndexCarouselState extends State<MobileIndexCarousel> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (i.linkUrl != null && i.linkUrl.isNotEmpty) {
|
if (i.linkUrl?.isNotEmpty == true) {
|
||||||
Util.openWebUrl(context, i.linkUrl);
|
Util.openWebUrl(context, i.linkUrl!);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import 'package:flutter_wisetronic/generated/l10n.dart';
|
|||||||
class MobileIndexMainContent1 extends StatefulWidget {
|
class MobileIndexMainContent1 extends StatefulWidget {
|
||||||
final String message;
|
final String message;
|
||||||
|
|
||||||
const MobileIndexMainContent1(this.message, {Key key}) : super(key: key);
|
const MobileIndexMainContent1(this.message, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
class MobileIndexMainContent2 extends StatefulWidget {
|
class MobileIndexMainContent2 extends StatefulWidget {
|
||||||
final Map<String, dynamic> content;
|
final Map<String, dynamic> content;
|
||||||
|
|
||||||
const MobileIndexMainContent2(this.content, {Key key}) : super(key: key);
|
const MobileIndexMainContent2(this.content, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import '../../utils/util_web.dart' if (dart.library.io) '../../utils/util_io.dar
|
|||||||
class MobileIndexMainContent3 extends StatefulWidget {
|
class MobileIndexMainContent3 extends StatefulWidget {
|
||||||
final Map<String, dynamic> content;
|
final Map<String, dynamic> content;
|
||||||
|
|
||||||
const MobileIndexMainContent3(this.content, {Key key}) : super(key: key);
|
const MobileIndexMainContent3(this.content, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import '../../widgets/mobile/mobile_navigation_drawer_header.dart';
|
|||||||
import '../../constants.dart';
|
import '../../constants.dart';
|
||||||
|
|
||||||
class MobileNavigationDrawer extends StatefulWidget {
|
class MobileNavigationDrawer extends StatefulWidget {
|
||||||
const MobileNavigationDrawer({Key key}) : super(key: key);
|
const MobileNavigationDrawer({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
@@ -23,11 +23,11 @@ class MobileNavigationDrawer extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MobileNavigationDrawerState extends State<MobileNavigationDrawer> {
|
class MobileNavigationDrawerState extends State<MobileNavigationDrawer> {
|
||||||
User _user;
|
User? _user;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
String currentRoute = ModalRoute.of(context).settings.name;
|
String currentRoute = ModalRoute.of(context)?.settings.name ?? '';
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
width: 200.0,
|
width: 200.0,
|
||||||
|
|||||||
@@ -10,11 +10,12 @@ import '../../widgets/general/navigationbar_logo.dart';
|
|||||||
import '../../routes.dart';
|
import '../../routes.dart';
|
||||||
|
|
||||||
class MobileNavigationBar extends StatefulWidget {
|
class MobileNavigationBar extends StatefulWidget {
|
||||||
final String title;
|
final String? title;
|
||||||
final bool back;
|
final bool? back;
|
||||||
final bool toHome;
|
final bool? toHome;
|
||||||
final bool showMe;
|
final bool? showMe;
|
||||||
const MobileNavigationBar({Key key, this.title, this.back, this.toHome, this.showMe}) : super(key: key);
|
|
||||||
|
const MobileNavigationBar({Key? key, this.title, this.back, this.toHome, this.showMe}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
@@ -24,19 +25,19 @@ class MobileNavigationBar extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MobileNavigationBarState extends State<MobileNavigationBar> {
|
class MobileNavigationBarState extends State<MobileNavigationBar> {
|
||||||
User _user;
|
User? _user;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return AppBar(
|
return AppBar(
|
||||||
leading: widget.back ?
|
leading: widget.back == true ?
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.arrow_back_ios,
|
Icons.arrow_back_ios,
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
if (widget.toHome) {
|
if (widget.toHome == true) {
|
||||||
Routes.router.navigateTo(context, '/', clearStack: true);
|
Routes.router.navigateTo(context, '/', clearStack: true);
|
||||||
} else {
|
} else {
|
||||||
Routes.router.pop(context);
|
Routes.router.pop(context);
|
||||||
@@ -53,7 +54,7 @@ class MobileNavigationBarState extends State<MobileNavigationBar> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
title: Container(
|
title: Container(
|
||||||
child: widget.title.isNotEmpty ?
|
child: widget.title?.isNotEmpty == true ?
|
||||||
Container(
|
Container(
|
||||||
child: Text(
|
child: Text(
|
||||||
'${widget.title}',
|
'${widget.title}',
|
||||||
|
|||||||
Reference in New Issue
Block a user