Initial Commit

This commit is contained in:
2021-02-11 15:47:42 -05:00
commit fec590b16e
249 changed files with 42571 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
import 'package:flutter/material.dart';
import 'package:imagini/core/env.dart';
import 'package:imagini/core/app_provider.dart';
import 'package:imagini/core/imagini_application.dart';
class AppComponent extends StatefulWidget {
final ImaginiApplication _application;
AppComponent(this._application);
@override
State createState() {
return new AppComponentState(_application);
}
}
class AppComponentState extends State<AppComponent> {
final ImaginiApplication _application;
AppComponentState(this._application);
@override
void dispose() async {
// Log.info('dispose');
super.dispose();
await _application.onTerminate();
}
@override
Widget build(BuildContext context) {
final app = new MaterialApp(
title: Env.value.appName,
debugShowCheckedModeBanner: false,
theme: new ThemeData(
primarySwatch: Colors.blue,
),
onGenerateRoute: _application.router.generator,
);
print('initial core.route = ${app.initialRoute}');
final appProvider = AppProvider(child: app, application: _application);
return appProvider;
}
}

View File

@@ -0,0 +1,27 @@
import 'package:flutter/material.dart';
import 'package:fluro/fluro.dart';
import 'package:imagini/core/imagini_application.dart';
class AppProvider extends InheritedWidget {
final ImaginiApplication application;
AppProvider({Key key, Widget child, this.application})
: super(key: key, child: child);
bool updateShouldNotify(_) => true;
static AppProvider of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<AppProvider>();
}
static FluroRouter getRouter(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<AppProvider>().application.router;
}
static ImaginiApplication getApplication(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<AppProvider>().application;
}
}

View File

@@ -0,0 +1,50 @@
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:imagini/screens/home_screen.dart';
import 'package:imagini/screens/login_screen.dart';
import 'package:imagini/screens/splash_screen.dart';
var splashHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
return SplashScreen();
}
);
var loginHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
return LoginScreen();
}
);
var homeHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
return HomeScreen();
}
);
// var appDetailRouteHandler = new Handler(
// handlerFunc: (BuildContext context, Map<String, List<String>> params) {
// String appId = params['appId']?.first;
// String heroTag = params['heroTag']?.first;
// String title = params['title']?.first;
// String url = params['url']?.first;
// String titleTag = params['titleTag']?.first;
//
// return new AppDetailPage(appId: num.parse(appId), heroTag:heroTag,title: title, url: url, titleTag: titleTag);
// });
class AppRoutes {
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
print('ROUTE WAS NOT FOUND !!!');
return;
}
);
router.define(SplashScreen.PATH, handler: splashHandler);
router.define(LoginScreen.PATH, handler: loginHandler);
router.define(HomeScreen.PATH, handler: homeHandler);
// router.define(AppDetailPage.PATH, handler: appDetailRouteHandler);
}
}

View File

@@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
import 'package:imagini/core/app_component.dart';
import 'package:imagini/core/imagini_application.dart';
class Env {
static Env value;
String appName;
Env() {
value = this;
_init();
}
_init() async {
WidgetsFlutterBinding.ensureInitialized();
var application = ImaginiApplication();
await application.onCreate();
runApp(AppComponent(application));
}
}

View File

@@ -0,0 +1,27 @@
import 'package:fluro/fluro.dart';
import 'package:imagini/core/app_routes.dart';
import 'package:imagini/api/api_provider.dart';
import 'package:imagini/api/imagini_api_repository.dart';
class ImaginiApplication {
FluroRouter router;
ImaginiAPIRepository imaginiAPI;
Future<void> onCreate() async {
_initRouter();
_initAPIRepository();
}
Future<void> onTerminate() async {}
_initRouter() {
router = new FluroRouter();
AppRoutes.configureRoutes(router);
}
_initAPIRepository() {
APIProvider apiProvider = new APIProvider(server: "http://localhost:8484");
imaginiAPI = ImaginiAPIRepository(apiProvider);
}
}