diff --git a/assets/images/welcome_screen/png/First_Onboarding.png b/assets/images/welcome_screen/png/First_Onboarding.png
new file mode 100644
index 0000000..44f32a8
Binary files /dev/null and b/assets/images/welcome_screen/png/First_Onboarding.png differ
diff --git a/assets/images/welcome_screen/png/Second_Onboarding.png b/assets/images/welcome_screen/png/Second_Onboarding.png
new file mode 100644
index 0000000..35de1b0
Binary files /dev/null and b/assets/images/welcome_screen/png/Second_Onboarding.png differ
diff --git a/assets/images/welcome_screen/png/Third_Onboarding.png b/assets/images/welcome_screen/png/Third_Onboarding.png
new file mode 100644
index 0000000..f2f344e
Binary files /dev/null and b/assets/images/welcome_screen/png/Third_Onboarding.png differ
diff --git a/assets/images/welcome_screen/svg/Splash_BG.svg b/assets/images/welcome_screen/svg/Splash_BG.svg
new file mode 100644
index 0000000..77ce035
--- /dev/null
+++ b/assets/images/welcome_screen/svg/Splash_BG.svg
@@ -0,0 +1,13 @@
+
diff --git a/assets/images/welcome_screen/svg/Tanami_Capital_Logo.svg b/assets/images/welcome_screen/svg/Tanami_Capital_Logo.svg
new file mode 100644
index 0000000..849eb85
--- /dev/null
+++ b/assets/images/welcome_screen/svg/Tanami_Capital_Logo.svg
@@ -0,0 +1,23 @@
+
diff --git a/assets/images/welcome_screen/svg/Tanami_Capital_Splash_Logo.svg b/assets/images/welcome_screen/svg/Tanami_Capital_Splash_Logo.svg
new file mode 100644
index 0000000..cd943ea
--- /dev/null
+++ b/assets/images/welcome_screen/svg/Tanami_Capital_Splash_Logo.svg
@@ -0,0 +1,23 @@
+
diff --git a/lib/core/routes/route_name.dart b/lib/core/routes/route_name.dart
index 3d56a97..ed31c5b 100644
--- a/lib/core/routes/route_name.dart
+++ b/lib/core/routes/route_name.dart
@@ -11,4 +11,7 @@ class RouteName {
//No Internet
static const String noInternetScreen = 'noInternet';
+
+ //Welcome
+ static const String welcomeScreen = 'welcome';
}
diff --git a/lib/core/routes/routes.dart b/lib/core/routes/routes.dart
index cfea0f4..eca3876 100644
--- a/lib/core/routes/routes.dart
+++ b/lib/core/routes/routes.dart
@@ -2,6 +2,7 @@
import 'package:go_router/go_router.dart';
import 'package:tanami_app/core/routes/route_name.dart';
+import 'package:tanami_app/features/welcome/presentation/pages/weclome_screen.dart';
import '../../features/login/presentation/pages/login_screen.dart';
import '../../features/splash/presentation/pages/splash_screen.dart';
@@ -35,6 +36,13 @@ final goRouter = GoRouter(
return const LoginScreen();
},
),
+ GoRoute(
+ name: RouteName.welcomeScreen,
+ path: RouteName.welcomeScreen,
+ builder: (context, state) {
+ return const WelcomeScreen();
+ },
+ ),
]),
// GoRoute(
diff --git a/lib/core/styles/app_color.dart b/lib/core/styles/app_color.dart
new file mode 100644
index 0000000..0de7396
--- /dev/null
+++ b/lib/core/styles/app_color.dart
@@ -0,0 +1,16 @@
+import 'package:flutter/material.dart';
+
+class AppColor {
+ //Primary Color
+ static const Color primaryColor = Color(0xFF002F0F);
+
+ //Secondary Color
+
+ //Welcome Color
+ static const Color indicatorActiveColor = Color(0xFF002F0F);
+ static const Color indicatorInactiveColor = Color(0xFFb8c1bb);
+
+ //Common Color
+ static const Color plainWhite = Color(0xFFFFFFFF);
+ static const Color darkGreyColor = Color(0xFF343434);
+}
diff --git a/lib/core/styles/app_images.dart b/lib/core/styles/app_images.dart
new file mode 100644
index 0000000..9627984
--- /dev/null
+++ b/lib/core/styles/app_images.dart
@@ -0,0 +1,19 @@
+class AppImages {
+ //Splash
+ static const String splashBg =
+ "assets/images/welcome_screen/svg/Splash_BG.svg";
+ static const String splashLogo =
+ "assets/images/welcome_screen/svg/Tanami_Capital_Splash_Logo.svg";
+
+ //Welcome
+ static const String weclomeLogo =
+ "assets/images/welcome_screen/svg/Tanami_Capital_Logo.svg";
+ static const String firstWelcome =
+ "assets/images/welcome_screen/png/First_Onboarding.png";
+
+ static const String secondWelcome =
+ "assets/images/welcome_screen/png/Second_Onboarding.png";
+
+ static const String thirdWelcome =
+ "assets/images/welcome_screen/png/Third_Onboarding.png";
+}
diff --git a/lib/core/styles/app_text.dart b/lib/core/styles/app_text.dart
new file mode 100644
index 0000000..033f058
--- /dev/null
+++ b/lib/core/styles/app_text.dart
@@ -0,0 +1,17 @@
+class AppText {
+ //Splash
+ static const String splashVersionText = "APP: v.";
+ static const String splashCopyrightText = '© 2024 Tanami';
+
+ //Welcome
+ static const String welcomeTitle1Text = "Tanami offers";
+ static const String welcomeTitle2Text = "Invest alongside";
+ static const String welcomeTitle3Text = "Start investing today ";
+ static const String weclomeDescription1Text =
+ "access to best-in-class, exclusive, global private investments";
+ static const String weclomeDescription2Text =
+ "experienced investment experts with a long-standing track record";
+ static const String weclomeDescription3Text = "with only SAR 1,000";
+ static const String loginText = "Login In";
+ static const String signUpText = "Sign Up";
+}
diff --git a/lib/core/utils/connectivity/network_connectivity.dart b/lib/core/utils/connectivity/network_connectivity.dart
index e657ca3..9926267 100644
--- a/lib/core/utils/connectivity/network_connectivity.dart
+++ b/lib/core/utils/connectivity/network_connectivity.dart
@@ -26,7 +26,9 @@ class NetworkConnectivity {
if (result[0] == ConnectivityResult.wifi ||
result[0] == ConnectivityResult.mobile) {
- goRouter.pop(true);
+ if (goRouter.canPop()) {
+ goRouter.pop(true);
+ }
} else {
goRouter.go(RouteName.noInternetScreen);
}
diff --git a/lib/features/splash/presentation/bloc/app_version/app_version_bloc.dart b/lib/features/splash/presentation/bloc/app_version/app_version_bloc.dart
new file mode 100644
index 0000000..741e194
--- /dev/null
+++ b/lib/features/splash/presentation/bloc/app_version/app_version_bloc.dart
@@ -0,0 +1,29 @@
+import 'package:bloc/bloc.dart';
+import 'package:package_info_plus/package_info_plus.dart';
+import 'app_version_event.dart';
+import 'app_version_state.dart';
+
+/// The AppVersionBloc class that handles app version-related events and states.
+class AppVersionBloc extends Bloc {
+ AppVersionBloc() : super(AppVersionInitial()) {
+ // Define the event handler for the LoadAppVersion event.
+ on(_onLoadAppVersion);
+ }
+
+ /// The event handler for the LoadAppVersion event.
+ Future _onLoadAppVersion(
+ LoadAppVersion event, Emitter emit) async {
+ try {
+ // Get the package info from the PackageInfoPlus package.
+ final packageInfo = await PackageInfo.fromPlatform();
+
+ // Extract the app version from the package info.
+ final version = packageInfo.version;
+ // Emit the AppVersionLoaded state with the app version.
+ emit(AppVersionLoaded(version));
+ } catch (e) {
+ // Emit the AppVersionError state with an error message.
+ emit(const AppVersionError('Failed to fetch app version'));
+ }
+ }
+}
diff --git a/lib/features/splash/presentation/bloc/app_version/app_version_event.dart b/lib/features/splash/presentation/bloc/app_version/app_version_event.dart
new file mode 100644
index 0000000..699df4b
--- /dev/null
+++ b/lib/features/splash/presentation/bloc/app_version/app_version_event.dart
@@ -0,0 +1,13 @@
+import 'package:equatable/equatable.dart';
+
+/// The AppVersionEvent class that represents app version-related events.
+abstract class AppVersionEvent extends Equatable {
+ const AppVersionEvent();
+
+ @override
+ List