Skip to content

Commit

Permalink
Split by packages
Browse files Browse the repository at this point in the history
  • Loading branch information
PlugFox committed Feb 4, 2024
1 parent 960ea62 commit dd7d188
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 37 deletions.
44 changes: 26 additions & 18 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import 'dart:async';

import 'package:example/src/common/util/error_util.dart';
import 'package:example/src/common/widget/app.dart';
import 'package:example/src/common/widget/app_error.dart';
import 'package:example/src/feature/initialization/data/initialization.dart';
import 'package:example/src/feature/initialization/widget/inherited_dependencies.dart';
import 'package:example/src/common/widget/app.dart' deferred as app;
import 'package:example/src/common/widget/app_error.dart' deferred as app_error;
import 'package:example/src/feature/initialization/data/initialization.dart'
deferred as initialization;
import 'package:example/src/feature/initialization/widget/inherited_dependencies.dart'
deferred as inherited_dependencies;
import 'package:flutter/widgets.dart';
import 'package:l/l.dart';

Expand All @@ -16,20 +18,26 @@ void main() => l.capture<void>(
ValueNotifier<({int progress, String message})>(
(progress: 0, message: ''));
/* runApp(SplashScreen(progress: initializationProgress)); */
$initializeApp(
onProgress: (progress, message) => initializationProgress.value =
(progress: progress, message: message),
onSuccess: (dependencies) => runApp(
InheritedDependencies(
dependencies: dependencies,
child: const App(),
),
),
onError: (error, stackTrace) {
runApp(AppError(error: error));
ErrorUtil.logError(error, stackTrace).ignore();
},
).ignore();
await initialization.loadLibrary();
await inherited_dependencies.loadLibrary();
await app.loadLibrary();
initialization
.$initializeApp(
onProgress: (progress, message) => initializationProgress
.value = (progress: progress, message: message),
onSuccess: (dependencies) => runApp(
inherited_dependencies.InheritedDependencies(
dependencies: dependencies,
child: app.App(),
),
),
onError: (error, stackTrace) async {
await app_error.loadLibrary();
runApp(app_error.AppError(error: error));
ErrorUtil.logError(error, stackTrace).ignore();
},
)
.ignore();
},
l.e,
),
Expand Down
70 changes: 52 additions & 18 deletions example/lib/src/common/router/routes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,8 @@ import 'package:example/src/feature/authentication/widget/signup_screen.dart';
import 'package:example/src/feature/gallery/widget/gallery_screen.dart';
import 'package:example/src/feature/gallery/widget/picture_screen.dart';
import 'package:example/src/feature/home/widget/home_screen.dart';
import 'package:example/src/feature/shop/widget/basket_screen.dart';
import 'package:example/src/feature/shop/widget/catalog_screen.dart';
import 'package:example/src/feature/shop/widget/category_screen.dart';
import 'package:example/src/feature/shop/widget/checkout_screen.dart';
import 'package:example/src/feature/shop/widget/favorites_screen.dart';
import 'package:example/src/feature/shop/widget/product_image_dialog.dart';
import 'package:example/src/feature/shop/widget/product_screen.dart';
import 'package:example/src/feature/shop/widget/shop_screen.dart';
import 'package:example/src/feature/shop/shop_screens.dart'
deferred as shop_screens;
import 'package:flutter/material.dart';
import 'package:octopus/octopus.dart';

Expand Down Expand Up @@ -49,17 +43,34 @@ enum Routes with OctopusRoute {
Routes.signin => const SignInScreen(),
Routes.signup => const SignUpScreen(),
Routes.home => const HomeScreen(),
Routes.shop => const ShopScreen(),
Routes.catalog => const CatalogScreen(),
Routes.category => CategoryScreen(id: node.arguments['id']),
Routes.product => ProductScreen(id: node.arguments['id']),
Routes.productImageDialog => ProductImageDialog(
id: node.arguments['id'],
idx: node.arguments['idx'],
Routes.shop =>
_ShopLoader(builder: (context) => shop_screens.ShopScreen()),
Routes.catalog => _ShopLoader(
builder: (context) => shop_screens.CatalogScreen(),
),
Routes.category => _ShopLoader(
builder: (context) =>
shop_screens.CategoryScreen(id: node.arguments['id']),
),
Routes.product => _ShopLoader(
builder: (context) =>
shop_screens.ProductScreen(id: node.arguments['id']),
),
Routes.productImageDialog => _ShopLoader(
builder: (context) => shop_screens.ProductImageDialog(
id: node.arguments['id'],
idx: node.arguments['idx'],
),
),
Routes.basket => _ShopLoader(
builder: (context) => shop_screens.BasketScreen(),
),
Routes.checkout => _ShopLoader(
builder: (context) => shop_screens.CheckoutScreen(),
),
Routes.favorites => _ShopLoader(
builder: (context) => shop_screens.FavoritesScreen(),
),
Routes.basket => const BasketScreen(),
Routes.checkout => const CheckoutScreen(),
Routes.favorites => const FavoritesScreen(),
Routes.gallery => const GalleryScreen(),
Routes.picture => PictureScreen(id: node.arguments['id']),
Routes.profile => const ProfileScreen(),
Expand All @@ -75,3 +86,26 @@ enum Routes with OctopusRoute {
: super.pageBuilder(context, node);
*/
}

class _ShopLoader extends StatelessWidget {
const _ShopLoader({
required this.builder,
super.key, // ignore: unused_element
});

static final Future<void> _loadShop = shop_screens.loadLibrary();

final WidgetBuilder builder;

@override
Widget build(BuildContext context) => FutureBuilder<void>(
initialData: null,
future: _loadShop,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return builder(context);
}
return const Center(child: CircularProgressIndicator());
},
);
}
8 changes: 8 additions & 0 deletions example/lib/src/feature/shop/shop_screens.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export 'package:example/src/feature/shop/widget/basket_screen.dart';
export 'package:example/src/feature/shop/widget/catalog_screen.dart';
export 'package:example/src/feature/shop/widget/category_screen.dart';
export 'package:example/src/feature/shop/widget/checkout_screen.dart';
export 'package:example/src/feature/shop/widget/favorites_screen.dart';
export 'package:example/src/feature/shop/widget/product_image_dialog.dart';
export 'package:example/src/feature/shop/widget/product_screen.dart';
export 'package:example/src/feature/shop/widget/shop_screen.dart';
2 changes: 1 addition & 1 deletion example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ packages:
path: ".."
relative: true
source: path
version: "0.0.6"
version: "0.0.8"
package_config:
dependency: transitive
description:
Expand Down

0 comments on commit dd7d188

Please sign in to comment.