feat: Add client main shell with bottom navigation
Introduces the new client_main feature package, providing a main shell with bottom navigation for the client app. Updates routing to use /client-main instead of /client-home, adds localization for new tabs, and implements navigation logic, UI, and tests for the main shell. Also refactors create_order module bindings and cleans up unused dependencies.
This commit is contained in:
@@ -6,7 +6,7 @@ import 'package:flutter_localizations/flutter_localizations.dart';
|
|||||||
import 'package:flutter_modular/flutter_modular.dart';
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
import 'package:client_authentication/client_authentication.dart'
|
import 'package:client_authentication/client_authentication.dart'
|
||||||
as client_authentication;
|
as client_authentication;
|
||||||
import 'package:client_home/client_home.dart' as client_home;
|
import 'package:client_main/client_main.dart' as client_main;
|
||||||
import 'package:client_settings/client_settings.dart' as client_settings;
|
import 'package:client_settings/client_settings.dart' as client_settings;
|
||||||
import 'package:client_hubs/client_hubs.dart' as client_hubs;
|
import 'package:client_hubs/client_hubs.dart' as client_hubs;
|
||||||
import 'package:client_create_order/client_create_order.dart'
|
import 'package:client_create_order/client_create_order.dart'
|
||||||
@@ -29,8 +29,8 @@ class AppModule extends Module {
|
|||||||
// Initial route points to the client authentication flow
|
// Initial route points to the client authentication flow
|
||||||
r.module('/', module: client_authentication.ClientAuthenticationModule());
|
r.module('/', module: client_authentication.ClientAuthenticationModule());
|
||||||
|
|
||||||
// Client home route
|
// Client main shell with bottom navigation (includes home as a child)
|
||||||
r.module('/client-home', module: client_home.ClientHomeModule());
|
r.module('/client-main', module: client_main.ClientMainModule());
|
||||||
|
|
||||||
// Client settings route
|
// Client settings route
|
||||||
r.module(
|
r.module(
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ dependencies:
|
|||||||
# Feature Packages
|
# Feature Packages
|
||||||
client_authentication:
|
client_authentication:
|
||||||
path: ../../packages/features/client/authentication
|
path: ../../packages/features/client/authentication
|
||||||
|
client_main:
|
||||||
|
path: ../../packages/features/client/client_main
|
||||||
client_home:
|
client_home:
|
||||||
path: ../../packages/features/client/home
|
path: ../../packages/features/client/home
|
||||||
client_settings:
|
client_settings:
|
||||||
|
|||||||
@@ -302,6 +302,15 @@
|
|||||||
"subtitle": "Long-term staffing placement",
|
"subtitle": "Long-term staffing placement",
|
||||||
"placeholder": "Permanent Order Flow (Work in Progress)"
|
"placeholder": "Permanent Order Flow (Work in Progress)"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"client_main": {
|
||||||
|
"tabs": {
|
||||||
|
"coverage": "Coverage",
|
||||||
|
"billing": "Billing",
|
||||||
|
"home": "Home",
|
||||||
|
"orders": "Orders",
|
||||||
|
"reports": "Reports"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -302,5 +302,14 @@
|
|||||||
"subtitle": "Colocación de personal a largo plazo",
|
"subtitle": "Colocación de personal a largo plazo",
|
||||||
"placeholder": "Flujo de Orden Permanente (Trabajo en Progreso)"
|
"placeholder": "Flujo de Orden Permanente (Trabajo en Progreso)"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"client_main": {
|
||||||
|
"tabs": {
|
||||||
|
"coverage": "Cobertura",
|
||||||
|
"billing": "Facturación",
|
||||||
|
"home": "Inicio",
|
||||||
|
"orders": "Órdenes",
|
||||||
|
"reports": "Reportes"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,4 +180,7 @@ class UiIcons {
|
|||||||
|
|
||||||
/// NFC icon
|
/// NFC icon
|
||||||
static const IconData nfc = _IconLib.nfc;
|
static const IconData nfc = _IconLib.nfc;
|
||||||
|
|
||||||
|
/// Chart icon for reports
|
||||||
|
static const IconData chart = _IconLib.barChart3;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,8 +18,9 @@ extension ClientAuthNavigator on IModularNavigator {
|
|||||||
|
|
||||||
/// Navigates to the main client home dashboard.
|
/// Navigates to the main client home dashboard.
|
||||||
///
|
///
|
||||||
/// Uses absolute path navigation to reset the navigation stack if necessary.
|
/// Uses absolute path navigation to the client main shell,
|
||||||
|
/// which will display the home tab by default.
|
||||||
void navigateClientHome() {
|
void navigateClientHome() {
|
||||||
navigate('/client-home');
|
navigate('/client-main/home');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
library;
|
||||||
|
|
||||||
|
export 'src/client_main_module.dart';
|
||||||
|
export 'src/presentation/navigation/client_main_navigator.dart';
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import 'package:client_home/client_home.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
|
||||||
|
import 'presentation/blocs/client_main_cubit.dart';
|
||||||
|
import 'presentation/pages/client_main_page.dart';
|
||||||
|
import 'presentation/pages/placeholder_page.dart';
|
||||||
|
|
||||||
|
class ClientMainModule extends Module {
|
||||||
|
@override
|
||||||
|
void binds(Injector i) {
|
||||||
|
i.addSingleton(ClientMainCubit.new);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void routes(RouteManager r) {
|
||||||
|
r.child(
|
||||||
|
'/',
|
||||||
|
child: (BuildContext context) => const ClientMainPage(),
|
||||||
|
children: <ParallelRoute<dynamic>>[
|
||||||
|
ModuleRoute<dynamic>('/home', module: ClientHomeModule()),
|
||||||
|
// Placeholders for other tabs
|
||||||
|
ChildRoute<dynamic>(
|
||||||
|
'/coverage',
|
||||||
|
child: (BuildContext context) =>
|
||||||
|
const PlaceholderPage(title: 'Coverage'),
|
||||||
|
),
|
||||||
|
ChildRoute<dynamic>(
|
||||||
|
'/billing',
|
||||||
|
child: (BuildContext context) =>
|
||||||
|
const PlaceholderPage(title: 'Billing'),
|
||||||
|
),
|
||||||
|
ChildRoute<dynamic>(
|
||||||
|
'/orders',
|
||||||
|
child: (BuildContext context) =>
|
||||||
|
const PlaceholderPage(title: 'Orders'),
|
||||||
|
),
|
||||||
|
ChildRoute<dynamic>(
|
||||||
|
'/reports',
|
||||||
|
child: (BuildContext context) =>
|
||||||
|
const PlaceholderPage(title: 'Reports'),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
import 'client_main_state.dart';
|
||||||
|
|
||||||
|
class ClientMainCubit extends Cubit<ClientMainState> implements Disposable {
|
||||||
|
ClientMainCubit() : super(const ClientMainState()) {
|
||||||
|
Modular.to.addListener(_onRouteChanged);
|
||||||
|
_onRouteChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _onRouteChanged() {
|
||||||
|
final String path = Modular.to.path;
|
||||||
|
int newIndex = state.currentIndex;
|
||||||
|
|
||||||
|
// Detect which tab is active based on the route path
|
||||||
|
// Using contains() to handle child routes and trailing slashes
|
||||||
|
if (path.contains('/client-main/coverage')) {
|
||||||
|
newIndex = 0;
|
||||||
|
} else if (path.contains('/client-main/billing')) {
|
||||||
|
newIndex = 1;
|
||||||
|
} else if (path.contains('/client-main/home')) {
|
||||||
|
newIndex = 2;
|
||||||
|
} else if (path.contains('/client-main/orders')) {
|
||||||
|
newIndex = 3;
|
||||||
|
} else if (path.contains('/client-main/reports')) {
|
||||||
|
newIndex = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newIndex != state.currentIndex) {
|
||||||
|
emit(state.copyWith(currentIndex: newIndex));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void navigateToTab(int index) {
|
||||||
|
if (index == state.currentIndex) return;
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
Modular.to.navigate('/client-main/coverage');
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
Modular.to.navigate('/client-main/billing');
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
Modular.to.navigate('/client-main/home');
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
Modular.to.navigate('/client-main/orders');
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
Modular.to.navigate('/client-main/reports');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// State update will happen via _onRouteChanged
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
Modular.to.removeListener(_onRouteChanged);
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
class ClientMainState extends Equatable {
|
||||||
|
const ClientMainState({
|
||||||
|
this.currentIndex = 2, // Default to Home
|
||||||
|
});
|
||||||
|
|
||||||
|
final int currentIndex;
|
||||||
|
|
||||||
|
ClientMainState copyWith({int? currentIndex}) {
|
||||||
|
return ClientMainState(currentIndex: currentIndex ?? this.currentIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => <Object>[currentIndex];
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
|
||||||
|
/// Extension to provide typed navigation for the Client Main feature.
|
||||||
|
extension ClientMainNavigator on IModularNavigator {
|
||||||
|
/// Navigates to the Client Main Shell (Home).
|
||||||
|
/// This replaces the current navigation stack.
|
||||||
|
void navigateClientMain() {
|
||||||
|
navigate('/client-main/');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
|
||||||
|
import '../blocs/client_main_cubit.dart';
|
||||||
|
import '../blocs/client_main_state.dart';
|
||||||
|
import '../widgets/client_main_bottom_bar.dart';
|
||||||
|
|
||||||
|
/// The main page for the Client app, acting as a shell for the bottom navigation.
|
||||||
|
///
|
||||||
|
/// It follows KROW Clean Architecture by:
|
||||||
|
/// - Being a [StatelessWidget].
|
||||||
|
/// - Delegating state management to [ClientMainCubit].
|
||||||
|
/// - Using [RouterOutlet] for nested navigation.
|
||||||
|
class ClientMainPage extends StatelessWidget {
|
||||||
|
const ClientMainPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return BlocProvider<ClientMainCubit>(
|
||||||
|
create: (BuildContext context) => Modular.get<ClientMainCubit>(),
|
||||||
|
child: Scaffold(
|
||||||
|
extendBody: true,
|
||||||
|
body: const RouterOutlet(),
|
||||||
|
bottomNavigationBar: BlocBuilder<ClientMainCubit, ClientMainState>(
|
||||||
|
builder: (BuildContext context, ClientMainState state) {
|
||||||
|
return ClientMainBottomBar(
|
||||||
|
currentIndex: state.currentIndex,
|
||||||
|
onTap: (int index) {
|
||||||
|
BlocProvider.of<ClientMainCubit>(context).navigateToTab(index);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import 'package:design_system/design_system.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
/// A placeholder page for features that are not yet implemented.
|
||||||
|
///
|
||||||
|
/// This page displays a simple message indicating that the feature
|
||||||
|
/// is coming soon. It follows the KROW Design System guidelines by:
|
||||||
|
/// - Using [UiAppBar] for the app bar
|
||||||
|
/// - Using [UiTypography] for text styling
|
||||||
|
/// - Using [UiColors] via typography extensions
|
||||||
|
class PlaceholderPage extends StatelessWidget {
|
||||||
|
/// Creates a [PlaceholderPage].
|
||||||
|
///
|
||||||
|
/// The [title] is displayed in the app bar and used in the
|
||||||
|
/// "coming soon" message.
|
||||||
|
const PlaceholderPage({required this.title, super.key});
|
||||||
|
|
||||||
|
/// The title of the feature being displayed.
|
||||||
|
final String title;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: UiAppBar(title: title),
|
||||||
|
body: Center(
|
||||||
|
child: Text(
|
||||||
|
'$title Feature Coming Soon',
|
||||||
|
style: UiTypography.body1r.textPrimary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
|
import 'package:core_localization/core_localization.dart';
|
||||||
|
import 'package:design_system/design_system.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
/// A custom bottom navigation bar for the Client app.
|
||||||
|
///
|
||||||
|
/// This widget provides a glassmorphic bottom navigation bar with blur effect
|
||||||
|
/// and follows the KROW Design System guidelines. It displays five tabs:
|
||||||
|
/// Coverage, Billing, Home, Orders, and Reports.
|
||||||
|
///
|
||||||
|
/// The widget uses:
|
||||||
|
/// - [UiColors] for all color values
|
||||||
|
/// - [UiTypography] for text styling
|
||||||
|
/// - [UiIcons] for icon assets
|
||||||
|
/// - [UiConstants] for spacing and sizing
|
||||||
|
class ClientMainBottomBar extends StatelessWidget {
|
||||||
|
/// Creates a [ClientMainBottomBar].
|
||||||
|
///
|
||||||
|
/// The [currentIndex] indicates which tab is currently selected.
|
||||||
|
/// The [onTap] callback is invoked when a tab is tapped.
|
||||||
|
const ClientMainBottomBar({
|
||||||
|
required this.currentIndex,
|
||||||
|
required this.onTap,
|
||||||
|
super.key,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// The index of the currently selected tab.
|
||||||
|
final int currentIndex;
|
||||||
|
|
||||||
|
/// Callback invoked when a tab is tapped.
|
||||||
|
///
|
||||||
|
/// The callback receives the index of the tapped tab.
|
||||||
|
final ValueChanged<int> onTap;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
// Client App colors from design system
|
||||||
|
const Color activeColor = UiColors.textPrimary;
|
||||||
|
const Color inactiveColor = UiColors.textInactive;
|
||||||
|
|
||||||
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: <Widget>[
|
||||||
|
// Glassmorphic background with blur effect
|
||||||
|
Positioned.fill(
|
||||||
|
child: ClipRect(
|
||||||
|
child: BackdropFilter(
|
||||||
|
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: UiColors.white.withValues(alpha: 0.85),
|
||||||
|
border: Border(
|
||||||
|
top: BorderSide(
|
||||||
|
color: UiColors.black.withValues(alpha: 0.1),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Navigation items
|
||||||
|
Container(
|
||||||
|
padding: EdgeInsets.only(
|
||||||
|
bottom: MediaQuery.of(context).padding.bottom + UiConstants.space2,
|
||||||
|
top: UiConstants.space4,
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
children: <Widget>[
|
||||||
|
_buildNavItem(
|
||||||
|
index: 0,
|
||||||
|
icon: UiIcons.calendar,
|
||||||
|
label: t.client_main.tabs.coverage,
|
||||||
|
activeColor: activeColor,
|
||||||
|
inactiveColor: inactiveColor,
|
||||||
|
),
|
||||||
|
_buildNavItem(
|
||||||
|
index: 1,
|
||||||
|
icon: UiIcons.dollar,
|
||||||
|
label: t.client_main.tabs.billing,
|
||||||
|
activeColor: activeColor,
|
||||||
|
inactiveColor: inactiveColor,
|
||||||
|
),
|
||||||
|
_buildNavItem(
|
||||||
|
index: 2,
|
||||||
|
icon: UiIcons.building,
|
||||||
|
label: t.client_main.tabs.home,
|
||||||
|
activeColor: activeColor,
|
||||||
|
inactiveColor: inactiveColor,
|
||||||
|
),
|
||||||
|
_buildNavItem(
|
||||||
|
index: 3,
|
||||||
|
icon: UiIcons.file,
|
||||||
|
label: t.client_main.tabs.orders,
|
||||||
|
activeColor: activeColor,
|
||||||
|
inactiveColor: inactiveColor,
|
||||||
|
),
|
||||||
|
_buildNavItem(
|
||||||
|
index: 4,
|
||||||
|
icon: UiIcons.chart,
|
||||||
|
label: t.client_main.tabs.reports,
|
||||||
|
activeColor: activeColor,
|
||||||
|
inactiveColor: inactiveColor,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Builds a single navigation item.
|
||||||
|
///
|
||||||
|
/// Uses design system tokens for all styling:
|
||||||
|
/// - Icon size uses a standard value (24px is acceptable for navigation icons)
|
||||||
|
/// - Spacing uses [UiConstants.space1]
|
||||||
|
/// - Typography uses [UiTypography.footnote2m]
|
||||||
|
/// - Colors are passed as parameters from design system
|
||||||
|
Widget _buildNavItem({
|
||||||
|
required int index,
|
||||||
|
required IconData icon,
|
||||||
|
required String label,
|
||||||
|
required Color activeColor,
|
||||||
|
required Color inactiveColor,
|
||||||
|
}) {
|
||||||
|
final bool isSelected = currentIndex == index;
|
||||||
|
return Expanded(
|
||||||
|
child: GestureDetector(
|
||||||
|
onTap: () => onTap(index),
|
||||||
|
behavior: HitTestBehavior.opaque,
|
||||||
|
child: Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.end,
|
||||||
|
children: <Widget>[
|
||||||
|
Icon(
|
||||||
|
icon,
|
||||||
|
color: isSelected ? activeColor : inactiveColor,
|
||||||
|
size: 24, // Standard navigation icon size
|
||||||
|
),
|
||||||
|
const SizedBox(height: UiConstants.space1),
|
||||||
|
Text(
|
||||||
|
label,
|
||||||
|
style: UiTypography.footnote2m.copyWith(
|
||||||
|
color: isSelected ? activeColor : inactiveColor,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
name: client_main
|
||||||
|
description: Main shell and navigation for the client application.
|
||||||
|
version: 0.0.1
|
||||||
|
publish_to: none
|
||||||
|
resolution: workspace
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: '>=3.10.0 <4.0.0'
|
||||||
|
flutter: ">=3.0.0"
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
flutter:
|
||||||
|
sdk: flutter
|
||||||
|
flutter_bloc: ^8.1.0
|
||||||
|
flutter_modular: ^6.3.0
|
||||||
|
equatable: ^2.0.5
|
||||||
|
lucide_icons: ^0.257.0
|
||||||
|
|
||||||
|
# Architecture Packages
|
||||||
|
design_system:
|
||||||
|
path: ../../../design_system
|
||||||
|
core_localization:
|
||||||
|
path: ../../../core_localization
|
||||||
|
client_home:
|
||||||
|
path: ../home
|
||||||
|
# Intentionally commenting these out as they might not exist yet
|
||||||
|
# client_settings:
|
||||||
|
# path: ../settings
|
||||||
|
|
||||||
|
dev_dependencies:
|
||||||
|
flutter_test:
|
||||||
|
sdk: flutter
|
||||||
|
bloc_test: ^9.1.0
|
||||||
|
mocktail: ^1.0.0
|
||||||
|
flutter_lints: ^6.0.0
|
||||||
|
|
||||||
|
flutter:
|
||||||
|
uses-material-design: true
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
import 'package:bloc_test/bloc_test.dart';
|
||||||
|
import 'package:client_main/src/presentation/blocs/client_main_cubit.dart';
|
||||||
|
import 'package:client_main/src/presentation/blocs/client_main_state.dart';
|
||||||
|
import 'package:flutter_modular/flutter_modular.dart';
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:mocktail/mocktail.dart';
|
||||||
|
|
||||||
|
class MockIModularNavigator extends Mock implements IModularNavigator {}
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
group('ClientMainCubit', () {
|
||||||
|
late MockIModularNavigator navigator;
|
||||||
|
|
||||||
|
setUp(() {
|
||||||
|
navigator = MockIModularNavigator();
|
||||||
|
when(() => navigator.path).thenReturn('/home');
|
||||||
|
when(() => navigator.addListener(any())).thenReturn(null);
|
||||||
|
// Stub addListener to avoid errors when Cubit adds listener
|
||||||
|
// Note: addListener might be on Modular directly or via some other mechanic,
|
||||||
|
// but for this unit test we just want to suppress errors if possible or let the Cubit work.
|
||||||
|
// Actually Modular.to.addListener calls Modular.navigatorDelegate.addListener if it exists?
|
||||||
|
// Modular.to.addListener uses the internal RouterDelegate.
|
||||||
|
// Mocking Modular internals is hard.
|
||||||
|
|
||||||
|
// Let's rely on the fact that we mocked navigatorDelegate.
|
||||||
|
Modular.navigatorDelegate = navigator;
|
||||||
|
});
|
||||||
|
|
||||||
|
test('initial state is correct', () {
|
||||||
|
final cubit = ClientMainCubit();
|
||||||
|
expect(cubit.state, const ClientMainState(currentIndex: 2));
|
||||||
|
cubit.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Note: Testing actual route changes requires more complex Modular mocking
|
||||||
|
// or integration tests, but the structure allows it.
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -30,7 +30,6 @@ class ClientCreateOrderModule extends Module {
|
|||||||
i.addLazySingleton<ClientCreateOrderRepositoryInterface>(
|
i.addLazySingleton<ClientCreateOrderRepositoryInterface>(
|
||||||
() => ClientCreateOrderRepositoryImpl(
|
() => ClientCreateOrderRepositoryImpl(
|
||||||
orderMock: i.get<OrderRepositoryMock>(),
|
orderMock: i.get<OrderRepositoryMock>(),
|
||||||
dataConnect: ExampleConnector.instance,
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -47,14 +46,22 @@ class ClientCreateOrderModule extends Module {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void routes(RouteManager r) {
|
void routes(RouteManager r) {
|
||||||
r.child('/',
|
r.child(
|
||||||
child: (BuildContext context) => const ClientCreateOrderPage());
|
'/',
|
||||||
|
child: (BuildContext context) => const ClientCreateOrderPage(),
|
||||||
|
);
|
||||||
r.child('/rapid', child: (BuildContext context) => const RapidOrderPage());
|
r.child('/rapid', child: (BuildContext context) => const RapidOrderPage());
|
||||||
r.child('/one-time',
|
r.child(
|
||||||
child: (BuildContext context) => const OneTimeOrderPage());
|
'/one-time',
|
||||||
r.child('/recurring',
|
child: (BuildContext context) => const OneTimeOrderPage(),
|
||||||
child: (BuildContext context) => const RecurringOrderPage());
|
);
|
||||||
r.child('/permanent',
|
r.child(
|
||||||
child: (BuildContext context) => const PermanentOrderPage());
|
'/recurring',
|
||||||
|
child: (BuildContext context) => const RecurringOrderPage(),
|
||||||
|
);
|
||||||
|
r.child(
|
||||||
|
'/permanent',
|
||||||
|
child: (BuildContext context) => const PermanentOrderPage(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,8 @@ class ClientCreateOrderRepositoryImpl
|
|||||||
///
|
///
|
||||||
/// Requires the [OrderRepositoryMock] from the shared Data Connect package.
|
/// Requires the [OrderRepositoryMock] from the shared Data Connect package.
|
||||||
/// TODO: Inject and use ExampleConnector when real mutations are available.
|
/// TODO: Inject and use ExampleConnector when real mutations are available.
|
||||||
ClientCreateOrderRepositoryImpl({
|
ClientCreateOrderRepositoryImpl({required OrderRepositoryMock orderMock})
|
||||||
required OrderRepositoryMock orderMock,
|
: _orderMock = orderMock;
|
||||||
@Deprecated('Use ExampleConnector for real mutations in the future')
|
|
||||||
Object? dataConnect,
|
|
||||||
}) : _orderMock = orderMock;
|
|
||||||
final OrderRepositoryMock _orderMock;
|
final OrderRepositoryMock _orderMock;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -1,858 +0,0 @@
|
|||||||
# Generated by pub
|
|
||||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
|
||||||
packages:
|
|
||||||
_fe_analyzer_shared:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: _fe_analyzer_shared
|
|
||||||
sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "91.0.0"
|
|
||||||
analyzer:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: analyzer
|
|
||||||
sha256: f51c8499b35f9b26820cfe914828a6a98a94efd5cc78b37bb7d03debae3a1d08
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "8.4.1"
|
|
||||||
args:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: args
|
|
||||||
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
async:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: async
|
|
||||||
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.13.0"
|
|
||||||
auto_injector:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: auto_injector
|
|
||||||
sha256: "1fc2624898e92485122eb2b1698dd42511d7ff6574f84a3a8606fc4549a1e8f8"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.1"
|
|
||||||
bloc:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: bloc
|
|
||||||
sha256: "106842ad6569f0b60297619e9e0b1885c2fb9bf84812935490e6c5275777804e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "8.1.4"
|
|
||||||
bloc_test:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description:
|
|
||||||
name: bloc_test
|
|
||||||
sha256: "165a6ec950d9252ebe36dc5335f2e6eb13055f33d56db0eeb7642768849b43d2"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "9.1.7"
|
|
||||||
boolean_selector:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: boolean_selector
|
|
||||||
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.2"
|
|
||||||
characters:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: characters
|
|
||||||
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.0"
|
|
||||||
cli_config:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cli_config
|
|
||||||
sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.2.0"
|
|
||||||
clock:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: clock
|
|
||||||
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.2"
|
|
||||||
code_assets:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: code_assets
|
|
||||||
sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
collection:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: collection
|
|
||||||
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.19.1"
|
|
||||||
convert:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: convert
|
|
||||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.2"
|
|
||||||
core_localization:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../../../core_localization"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
coverage:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: coverage
|
|
||||||
sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.15.0"
|
|
||||||
crypto:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: crypto
|
|
||||||
sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.7"
|
|
||||||
csv:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: csv
|
|
||||||
sha256: c6aa2679b2a18cb57652920f674488d89712efaf4d3fdf2e537215b35fc19d6c
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.0.0"
|
|
||||||
design_system:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../../../design_system"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
diff_match_patch:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: diff_match_patch
|
|
||||||
sha256: "2efc9e6e8f449d0abe15be240e2c2a3bcd977c8d126cfd70598aee60af35c0a4"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.4.1"
|
|
||||||
equatable:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: equatable
|
|
||||||
sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.8"
|
|
||||||
fake_async:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: fake_async
|
|
||||||
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.3"
|
|
||||||
ffi:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: ffi
|
|
||||||
sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.5"
|
|
||||||
file:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: file
|
|
||||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "7.0.1"
|
|
||||||
fixnum:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: fixnum
|
|
||||||
sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.1"
|
|
||||||
flutter:
|
|
||||||
dependency: "direct main"
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
flutter_bloc:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_bloc
|
|
||||||
sha256: b594505eac31a0518bdcb4b5b79573b8d9117b193cc80cc12e17d639b10aa27a
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "8.1.6"
|
|
||||||
flutter_localizations:
|
|
||||||
dependency: transitive
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
flutter_modular:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_modular
|
|
||||||
sha256: "33a63d9fe61429d12b3dfa04795ed890f17d179d3d38e988ba7969651fcd5586"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.4.1"
|
|
||||||
flutter_test:
|
|
||||||
dependency: "direct dev"
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
flutter_web_plugins:
|
|
||||||
dependency: transitive
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
font_awesome_flutter:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: font_awesome_flutter
|
|
||||||
sha256: b9011df3a1fa02993630b8fb83526368cf2206a711259830325bab2f1d2a4eb0
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "10.12.0"
|
|
||||||
frontend_server_client:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: frontend_server_client
|
|
||||||
sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.0.0"
|
|
||||||
glob:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: glob
|
|
||||||
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.3"
|
|
||||||
google_fonts:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: google_fonts
|
|
||||||
sha256: "6996212014b996eaa17074e02b1b925b212f5e053832d9048970dc27255a8fb3"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "7.1.0"
|
|
||||||
hooks:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: hooks
|
|
||||||
sha256: "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
http:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http
|
|
||||||
sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.6.0"
|
|
||||||
http_multi_server:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http_multi_server
|
|
||||||
sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.2.2"
|
|
||||||
http_parser:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: http_parser
|
|
||||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.1.2"
|
|
||||||
intl:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: intl
|
|
||||||
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.20.2"
|
|
||||||
io:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: io
|
|
||||||
sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.5"
|
|
||||||
js:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: js
|
|
||||||
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.7.2"
|
|
||||||
krow_core:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../../../core"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
krow_data_connect:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../../../data_connect"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
krow_domain:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
path: "../../../domain"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
leak_tracker:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: leak_tracker
|
|
||||||
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "11.0.2"
|
|
||||||
leak_tracker_flutter_testing:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: leak_tracker_flutter_testing
|
|
||||||
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.10"
|
|
||||||
leak_tracker_testing:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: leak_tracker_testing
|
|
||||||
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.2"
|
|
||||||
logging:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: logging
|
|
||||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.0"
|
|
||||||
lucide_icons:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: lucide_icons
|
|
||||||
sha256: ad24d0fd65707e48add30bebada7d90bff2a1bba0a72d6e9b19d44246b0e83c4
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.257.0"
|
|
||||||
matcher:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: matcher
|
|
||||||
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.12.17"
|
|
||||||
material_color_utilities:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: material_color_utilities
|
|
||||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.11.1"
|
|
||||||
meta:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: meta
|
|
||||||
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.17.0"
|
|
||||||
mime:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: mime
|
|
||||||
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.0"
|
|
||||||
mocktail:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: mocktail
|
|
||||||
sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.4"
|
|
||||||
modular_core:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: modular_core
|
|
||||||
sha256: "1db0420a0dfb8a2c6dca846e7cbaa4ffeb778e247916dbcb27fb25aa566e5436"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.4.1"
|
|
||||||
native_toolchain_c:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: native_toolchain_c
|
|
||||||
sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.17.4"
|
|
||||||
nested:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: nested
|
|
||||||
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.0"
|
|
||||||
node_preamble:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: node_preamble
|
|
||||||
sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.2"
|
|
||||||
objective_c:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: objective_c
|
|
||||||
sha256: "9922a1ad59ac5afb154cc948aa6ded01987a75003651d0a2866afc23f4da624e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "9.2.3"
|
|
||||||
package_config:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: package_config
|
|
||||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.0"
|
|
||||||
path:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path
|
|
||||||
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.9.1"
|
|
||||||
path_provider:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider
|
|
||||||
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.5"
|
|
||||||
path_provider_android:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider_android
|
|
||||||
sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.22"
|
|
||||||
path_provider_foundation:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider_foundation
|
|
||||||
sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.6.0"
|
|
||||||
path_provider_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider_linux
|
|
||||||
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.1"
|
|
||||||
path_provider_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider_platform_interface
|
|
||||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.2"
|
|
||||||
path_provider_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: path_provider_windows
|
|
||||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.3.0"
|
|
||||||
platform:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: platform
|
|
||||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.6"
|
|
||||||
plugin_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: plugin_platform_interface
|
|
||||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.8"
|
|
||||||
pool:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: pool
|
|
||||||
sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.5.2"
|
|
||||||
provider:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: provider
|
|
||||||
sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "6.1.5+1"
|
|
||||||
pub_semver:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: pub_semver
|
|
||||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.0"
|
|
||||||
result_dart:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: result_dart
|
|
||||||
sha256: "0666b21fbdf697b3bdd9986348a380aa204b3ebe7c146d8e4cdaa7ce735e6054"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.1"
|
|
||||||
shared_preferences:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences
|
|
||||||
sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.4"
|
|
||||||
shared_preferences_android:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_android
|
|
||||||
sha256: "83af5c682796c0f7719c2bbf74792d113e40ae97981b8f266fa84574573556bc"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.18"
|
|
||||||
shared_preferences_foundation:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_foundation
|
|
||||||
sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.5.6"
|
|
||||||
shared_preferences_linux:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_linux
|
|
||||||
sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_platform_interface
|
|
||||||
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shared_preferences_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_web
|
|
||||||
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.3"
|
|
||||||
shared_preferences_windows:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shared_preferences_windows
|
|
||||||
sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.4.1"
|
|
||||||
shelf:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf
|
|
||||||
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.2"
|
|
||||||
shelf_packages_handler:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_packages_handler
|
|
||||||
sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.2"
|
|
||||||
shelf_static:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_static
|
|
||||||
sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.3"
|
|
||||||
shelf_web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: shelf_web_socket
|
|
||||||
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.0"
|
|
||||||
sky_engine:
|
|
||||||
dependency: transitive
|
|
||||||
description: flutter
|
|
||||||
source: sdk
|
|
||||||
version: "0.0.0"
|
|
||||||
slang:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: slang
|
|
||||||
sha256: "13e3b6f07adc51ab751e7889647774d294cbce7a3382f81d9e5029acfe9c37b2"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.12.0"
|
|
||||||
slang_flutter:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: slang_flutter
|
|
||||||
sha256: "0a4545cca5404d6b7487cf61cf1fe56c52daeb08de56a7574ee8381fbad035a0"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.12.0"
|
|
||||||
source_map_stack_trace:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_map_stack_trace
|
|
||||||
sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.2"
|
|
||||||
source_maps:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_maps
|
|
||||||
sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.10.13"
|
|
||||||
source_span:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: source_span
|
|
||||||
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.10.1"
|
|
||||||
stack_trace:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: stack_trace
|
|
||||||
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.12.1"
|
|
||||||
stream_channel:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: stream_channel
|
|
||||||
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.1.4"
|
|
||||||
string_scanner:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: string_scanner
|
|
||||||
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.1"
|
|
||||||
term_glyph:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: term_glyph
|
|
||||||
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.2"
|
|
||||||
test:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: test
|
|
||||||
sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.26.3"
|
|
||||||
test_api:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: test_api
|
|
||||||
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.7.7"
|
|
||||||
test_core:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: test_core
|
|
||||||
sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.6.12"
|
|
||||||
typed_data:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: typed_data
|
|
||||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.4.0"
|
|
||||||
uuid:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: uuid
|
|
||||||
sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.5.2"
|
|
||||||
vector_math:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: vector_math
|
|
||||||
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.2.0"
|
|
||||||
vm_service:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: vm_service
|
|
||||||
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "15.0.2"
|
|
||||||
watcher:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: watcher
|
|
||||||
sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.1"
|
|
||||||
web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web
|
|
||||||
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.1"
|
|
||||||
web_socket:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket
|
|
||||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.0.1"
|
|
||||||
web_socket_channel:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: web_socket_channel
|
|
||||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.3"
|
|
||||||
webkit_inspection_protocol:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: webkit_inspection_protocol
|
|
||||||
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.1"
|
|
||||||
xdg_directories:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: xdg_directories
|
|
||||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.1.0"
|
|
||||||
yaml:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: yaml
|
|
||||||
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.1.3"
|
|
||||||
sdks:
|
|
||||||
dart: ">=3.10.7 <4.0.0"
|
|
||||||
flutter: ">=3.38.4"
|
|
||||||
@@ -2,9 +2,10 @@ name: client_create_order
|
|||||||
description: Client create order feature
|
description: Client create order feature
|
||||||
version: 0.0.1
|
version: 0.0.1
|
||||||
publish_to: none
|
publish_to: none
|
||||||
|
resolution: workspace
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.0 <4.0.0"
|
sdk: ">=3.10.0 <4.0.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
|
|||||||
@@ -185,13 +185,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.2"
|
version: "0.4.2"
|
||||||
client_create_order:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
path: "packages/features/client/create_order"
|
|
||||||
relative: true
|
|
||||||
source: path
|
|
||||||
version: "0.0.1"
|
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ workspace:
|
|||||||
- packages/features/client/home
|
- packages/features/client/home
|
||||||
- packages/features/client/settings
|
- packages/features/client/settings
|
||||||
- packages/features/client/hubs
|
- packages/features/client/hubs
|
||||||
|
- packages/features/client/create_order
|
||||||
|
- packages/features/client/client_main
|
||||||
- apps/staff
|
- apps/staff
|
||||||
- apps/client
|
- apps/client
|
||||||
- apps/design_system_viewer
|
- apps/design_system_viewer
|
||||||
|
|||||||
Reference in New Issue
Block a user