From 240a73de0cd97e090c5c8e8d17a7457cbe304a7f Mon Sep 17 00:00:00 2001 From: jayesh Date: Wed, 12 Jun 2024 12:02:46 +0530 Subject: [PATCH] no internet, error screen --- assets/images/no_internet/png/no_internet.png | Bin 0 -> 12604 bytes lib/core/routes/route_name.dart | 2 +- lib/core/routes/routes.dart | 8 ++ lib/core/styles/app_images.dart | 5 + .../connectivity/network_connectivity.dart | 5 +- lib/main.dart | 11 ++- lib/shared/components/error_widget.dart | 34 +++++++ lib/shared/components/no_internet.dart | 86 ++++++++++++++++++ pubspec.yaml | 2 + 9 files changed, 148 insertions(+), 5 deletions(-) create mode 100644 assets/images/no_internet/png/no_internet.png create mode 100644 lib/shared/components/error_widget.dart create mode 100644 lib/shared/components/no_internet.dart diff --git a/assets/images/no_internet/png/no_internet.png b/assets/images/no_internet/png/no_internet.png new file mode 100644 index 0000000000000000000000000000000000000000..cadfd6560aa11b34da1a784992cb12a164d8eebd GIT binary patch literal 12604 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 literal 0 HcmV?d00001 diff --git a/lib/core/routes/route_name.dart b/lib/core/routes/route_name.dart index fb859d3..ad420dd 100644 --- a/lib/core/routes/route_name.dart +++ b/lib/core/routes/route_name.dart @@ -15,7 +15,7 @@ class RouteName { static const String registerUserDetailsScreen = 'registerUserDetailsScreen'; //No Internet - static const String noInternetScreen = 'noInternet'; + static const String noInternetScreen = 'noInternetScreen'; //Welcome static const String welcomeScreen = 'welcome'; diff --git a/lib/core/routes/routes.dart b/lib/core/routes/routes.dart index 043f633..7d78ddc 100644 --- a/lib/core/routes/routes.dart +++ b/lib/core/routes/routes.dart @@ -25,6 +25,7 @@ import 'package:tanami_app/features/register/presentation/pages/register_screen. import 'package:tanami_app/features/register/presentation/pages/register_step_screen.dart'; import 'package:tanami_app/features/securePin/presentation/pages/pin_screen.dart'; import 'package:tanami_app/features/welcome/presentation/pages/weclome_screen.dart'; +import 'package:tanami_app/shared/components/no_internet.dart'; import '../../features/MainScreens/main_screen.dart'; import '../../features/forgotPassword/presentation/pages/restore_password_phone_verification_screen.dart'; @@ -254,6 +255,13 @@ final goRouter = GoRouter( return const ConfirmInvestmentScreen(); }, ), + GoRoute( + name: RouteName.noInternetScreen, + path: RouteName.noInternetScreen, + builder: (context, state) { + return const NoInternet(); + }, + ), ], ), ], diff --git a/lib/core/styles/app_images.dart b/lib/core/styles/app_images.dart index 2f31339..94652c1 100644 --- a/lib/core/styles/app_images.dart +++ b/lib/core/styles/app_images.dart @@ -116,4 +116,9 @@ class AppImages { 'assets/images/invest_screen/svg/time_square.svg'; static const String applePayIcon = 'assets/images/invest_screen/svg/apple_pay.svg'; + + //No Internet + + static const String noInternetImage = + 'assets/images/no_internet/png/no_internet.png'; } diff --git a/lib/core/utils/connectivity/network_connectivity.dart b/lib/core/utils/connectivity/network_connectivity.dart index 9926267..af1d160 100644 --- a/lib/core/utils/connectivity/network_connectivity.dart +++ b/lib/core/utils/connectivity/network_connectivity.dart @@ -1,6 +1,7 @@ // network_connectivity.dart import 'dart:async'; + import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:tanami_app/core/routes/route_name.dart'; import 'package:tanami_app/core/routes/routes.dart'; @@ -30,7 +31,7 @@ class NetworkConnectivity { goRouter.pop(true); } } else { - goRouter.go(RouteName.noInternetScreen); + goRouter.pushNamed(RouteName.noInternetScreen); } }); @@ -45,7 +46,7 @@ class NetworkConnectivity { onStatusChange(connectivityResult.toString()); } else { onStatusChange(connectivityResult.toString()); - goRouter.go(RouteName.noInternetScreen); + goRouter.pushNamed(RouteName.noInternetScreen); } } diff --git a/lib/main.dart b/lib/main.dart index 932b43b..6ad18d9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,6 +7,7 @@ import 'core/routes/routes.dart'; import 'core/utils/connectivity/network_connectivity.dart'; import 'features/countrySelection/presentation/bloc/choose_country_bloc.dart'; import 'shared/components/bloc/bottom_nav_bar/bottom_navigation_bloc.dart'; +import 'shared/components/error_widget.dart'; /* CREATED BY - JAYESH JAIN DATE - 24-05-2024 @@ -16,6 +17,12 @@ import 'shared/components/bloc/bottom_nav_bar/bottom_navigation_bloc.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); + FlutterError.onError = (FlutterErrorDetails details) { + FlutterError.dumpErrorToConsole(details); + runApp(CustomErrorWidget( + errorMessage: details.toString(), + )); + }; // Set the preferred orientations of the device. SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, @@ -63,8 +70,8 @@ class _MyAppState extends State with WidgetsBindingObserver { builder: (BuildContext context, Widget? child) => MaterialApp.router( title: 'Tanami Capital', theme: ThemeData( - // useMaterial3: true, - ), + useMaterial3: true, + ), debugShowCheckedModeBanner: false, routerConfig: goRouter, ), diff --git a/lib/shared/components/error_widget.dart b/lib/shared/components/error_widget.dart new file mode 100644 index 0000000..c7b5bae --- /dev/null +++ b/lib/shared/components/error_widget.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +class CustomErrorWidget extends StatelessWidget { + final String errorMessage; + + const CustomErrorWidget({super.key, required this.errorMessage}); + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.error_outline, + color: Colors.red, + size: 50.0, + ), + const SizedBox(height: 10.0), + const Text( + 'Error Occurred!', + style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 10.0), + Text( + errorMessage, + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 16.0), + ), + ], + ), + ); + } +} diff --git a/lib/shared/components/no_internet.dart b/lib/shared/components/no_internet.dart new file mode 100644 index 0000000..94209b1 --- /dev/null +++ b/lib/shared/components/no_internet.dart @@ -0,0 +1,86 @@ +// ignore_for_file: file_names, sized_box_for_whitespace + +import 'package:connectivity_plus/connectivity_plus.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:google_fonts/google_fonts.dart'; +import 'package:tanami_app/core/routes/routes.dart'; +import 'package:tanami_app/core/styles/app_color.dart'; +import 'package:tanami_app/shared/components/toast_message.dart'; + +import '../../core/styles/app_images.dart'; + +class NoInternet extends StatelessWidget { + const NoInternet({super.key}); + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () => Future.value(false), + child: Scaffold( + body: Column(children: [ + Center( + child: Container( + margin: const EdgeInsets.only(top: 100), + height: 180.h, + width: 1.sw, + child: Image.asset(AppImages.noInternetImage), + ), + ), + Center( + child: Padding( + padding: const EdgeInsets.only(top: 100), + child: Center( + child: Column( + children: [ + const SizedBox( + height: 15.0, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 20), + child: Text( + "Internet Connection is Down!\n\nEnsure your internet's up and running.", + textAlign: TextAlign.center, + style: GoogleFonts.dmSans( + fontSize: 18.0, + fontWeight: FontWeight.w500, + )), + ), + const SizedBox( + height: 30.0, + ), + InkWell( + onTap: () async { + final connectivityResult = + await (Connectivity().checkConnectivity()); + if (connectivityResult[0] == ConnectivityResult.wifi || + connectivityResult[0] == ConnectivityResult.mobile) { + goRouter.pop(); + } else { + errorToastMessage(context, "Internet is still down"); + } + }, + child: Container( + height: 54.h, + width: 330.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.h), + color: AppColor.primaryColor2), + child: Center( + child: Text( + "Try Again", + style: GoogleFonts.dmSans( + color: AppColor.plainWhite, fontSize: 20.sp), + ), + ), + ), + ), + ], + ), + ), + ), + ), + ])), + ); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 4eb7165..27c6ded 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -120,3 +120,5 @@ flutter: - assets/images/language_screen/png/ - assets/images/invest_screen/ - assets/images/invest_screen/svg/ + - assets/images/no_internet/ + - assets/images/no_internet/png/