feat : Adding bottomNav
This commit is contained in:
@@ -4,13 +4,15 @@ import 'package:bahla_front/ui/views/home/home_view.dart';
|
||||
import 'package:bahla_front/ui/views/startup/startup_view.dart';
|
||||
import 'package:stacked/stacked_annotations.dart';
|
||||
import 'package:stacked_services/stacked_services.dart';
|
||||
import 'package:bahla_front/ui/views/main/main_view.dart';
|
||||
// @stacked-import
|
||||
|
||||
@StackedApp(
|
||||
routes: [
|
||||
MaterialRoute(page: HomeView),
|
||||
MaterialRoute(page: StartupView),
|
||||
// @stacked-route
|
||||
MaterialRoute(page: MainView),
|
||||
// @stacked-route
|
||||
],
|
||||
dependencies: [
|
||||
LazySingleton(classType: BottomSheetService),
|
||||
|
||||
@@ -6,20 +6,24 @@
|
||||
|
||||
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||
import 'package:bahla_front/ui/views/home/home_view.dart' as _i2;
|
||||
import 'package:bahla_front/ui/views/main/main_view.dart' as _i4;
|
||||
import 'package:bahla_front/ui/views/startup/startup_view.dart' as _i3;
|
||||
import 'package:flutter/material.dart' as _i4;
|
||||
import 'package:flutter/material.dart' as _i5;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stacked/stacked.dart' as _i1;
|
||||
import 'package:stacked_services/stacked_services.dart' as _i5;
|
||||
import 'package:stacked_services/stacked_services.dart' as _i6;
|
||||
|
||||
class Routes {
|
||||
static const homeView = '/home-view';
|
||||
|
||||
static const startupView = '/startup-view';
|
||||
|
||||
static const mainView = '/main-view';
|
||||
|
||||
static const all = <String>{
|
||||
homeView,
|
||||
startupView,
|
||||
mainView,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,21 +37,31 @@ class StackedRouter extends _i1.RouterBase {
|
||||
Routes.startupView,
|
||||
page: _i3.StartupView,
|
||||
),
|
||||
_i1.RouteDef(
|
||||
Routes.mainView,
|
||||
page: _i4.MainView,
|
||||
),
|
||||
];
|
||||
|
||||
final _pagesMap = <Type, _i1.StackedRouteFactory>{
|
||||
_i2.HomeView: (data) {
|
||||
return _i4.MaterialPageRoute<dynamic>(
|
||||
return _i5.MaterialPageRoute<dynamic>(
|
||||
builder: (context) => const _i2.HomeView(),
|
||||
settings: data,
|
||||
);
|
||||
},
|
||||
_i3.StartupView: (data) {
|
||||
return _i4.MaterialPageRoute<dynamic>(
|
||||
return _i5.MaterialPageRoute<dynamic>(
|
||||
builder: (context) => const _i3.StartupView(),
|
||||
settings: data,
|
||||
);
|
||||
},
|
||||
_i4.MainView: (data) {
|
||||
return _i5.MaterialPageRoute<dynamic>(
|
||||
builder: (context) => const _i4.MainView(),
|
||||
settings: data,
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
@override
|
||||
@@ -57,7 +71,7 @@ class StackedRouter extends _i1.RouterBase {
|
||||
Map<Type, _i1.StackedRouteFactory> get pagesMap => _pagesMap;
|
||||
}
|
||||
|
||||
extension NavigatorStateExtension on _i5.NavigationService {
|
||||
extension NavigatorStateExtension on _i6.NavigationService {
|
||||
Future<dynamic> navigateToHomeView([
|
||||
int? routerId,
|
||||
bool preventDuplicates = true,
|
||||
@@ -65,7 +79,7 @@ extension NavigatorStateExtension on _i5.NavigationService {
|
||||
Widget Function(BuildContext, Animation<double>, Animation<double>, Widget)?
|
||||
transition,
|
||||
]) async {
|
||||
return navigateTo<dynamic>(Routes.homeView,
|
||||
return navigateTo<dynamic>(Routes.mainView, // Replace home view to main view
|
||||
id: routerId,
|
||||
preventDuplicates: preventDuplicates,
|
||||
parameters: parameters,
|
||||
@@ -86,6 +100,20 @@ extension NavigatorStateExtension on _i5.NavigationService {
|
||||
transition: transition);
|
||||
}
|
||||
|
||||
Future<dynamic> navigateToMainView([
|
||||
int? routerId,
|
||||
bool preventDuplicates = true,
|
||||
Map<String, String>? parameters,
|
||||
Widget Function(BuildContext, Animation<double>, Animation<double>, Widget)?
|
||||
transition,
|
||||
]) async {
|
||||
return navigateTo<dynamic>(Routes.mainView,
|
||||
id: routerId,
|
||||
preventDuplicates: preventDuplicates,
|
||||
parameters: parameters,
|
||||
transition: transition);
|
||||
}
|
||||
|
||||
Future<dynamic> replaceWithHomeView([
|
||||
int? routerId,
|
||||
bool preventDuplicates = true,
|
||||
@@ -93,7 +121,7 @@ extension NavigatorStateExtension on _i5.NavigationService {
|
||||
Widget Function(BuildContext, Animation<double>, Animation<double>, Widget)?
|
||||
transition,
|
||||
]) async {
|
||||
return replaceWith<dynamic>(Routes.homeView,
|
||||
return replaceWith<dynamic>(Routes.mainView, // Replace home view to main view
|
||||
id: routerId,
|
||||
preventDuplicates: preventDuplicates,
|
||||
parameters: parameters,
|
||||
@@ -113,4 +141,18 @@ extension NavigatorStateExtension on _i5.NavigationService {
|
||||
parameters: parameters,
|
||||
transition: transition);
|
||||
}
|
||||
|
||||
Future<dynamic> replaceWithMainView([
|
||||
int? routerId,
|
||||
bool preventDuplicates = true,
|
||||
Map<String, String>? parameters,
|
||||
Widget Function(BuildContext, Animation<double>, Animation<double>, Widget)?
|
||||
transition,
|
||||
]) async {
|
||||
return replaceWith<dynamic>(Routes.mainView,
|
||||
id: routerId,
|
||||
preventDuplicates: preventDuplicates,
|
||||
parameters: parameters,
|
||||
transition: transition);
|
||||
}
|
||||
}
|
||||
|
||||
66
lib/ui/views/main/main_view.dart
Normal file
66
lib/ui/views/main/main_view.dart
Normal file
@@ -0,0 +1,66 @@
|
||||
import 'package:bahla_front/ui/views/home/home_view.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:stacked/stacked.dart';
|
||||
|
||||
import 'main_viewmodel.dart';
|
||||
|
||||
class MainView extends StackedView<MainViewModel> {
|
||||
const MainView({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget builder(
|
||||
BuildContext context,
|
||||
MainViewModel viewModel,
|
||||
Widget? child,
|
||||
) {
|
||||
return Scaffold(
|
||||
backgroundColor: Theme.of(context).colorScheme.background,
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
type: BottomNavigationBarType.fixed,
|
||||
backgroundColor: Colors.grey[800],
|
||||
currentIndex: viewModel.currentIndex,
|
||||
onTap: viewModel.setIndex,
|
||||
items: [
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.home),
|
||||
label: 'Home',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.search),
|
||||
label: 'Search',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.add),
|
||||
label: 'Add',
|
||||
),
|
||||
BottomNavigationBarItem(
|
||||
icon: Icon(Icons.account_circle),
|
||||
label: 'Profile',
|
||||
),
|
||||
],
|
||||
),
|
||||
body: getViewForIndex(viewModel.currentIndex),
|
||||
);
|
||||
}
|
||||
|
||||
Widget getViewForIndex(int index) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return HomeView();
|
||||
case 1:
|
||||
return Container();
|
||||
case 2:
|
||||
return Container();
|
||||
case 3:
|
||||
return Container();
|
||||
default:
|
||||
return HomeView();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
MainViewModel viewModelBuilder(
|
||||
BuildContext context,
|
||||
) =>
|
||||
MainViewModel();
|
||||
}
|
||||
3
lib/ui/views/main/main_viewmodel.dart
Normal file
3
lib/ui/views/main/main_viewmodel.dart
Normal file
@@ -0,0 +1,3 @@
|
||||
import 'package:stacked/stacked.dart';
|
||||
|
||||
class MainViewModel extends IndexTrackingViewModel {}
|
||||
Reference in New Issue
Block a user