Initial Commit
This commit is contained in:
48
web_native/lib/core/app_component.dart
Normal file
48
web_native/lib/core/app_component.dart
Normal 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;
|
||||
}
|
||||
}
|
||||
27
web_native/lib/core/app_provider.dart
Normal file
27
web_native/lib/core/app_provider.dart
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
50
web_native/lib/core/app_routes.dart
Normal file
50
web_native/lib/core/app_routes.dart
Normal 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);
|
||||
}
|
||||
}
|
||||
21
web_native/lib/core/env.dart
Normal file
21
web_native/lib/core/env.dart
Normal 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));
|
||||
}
|
||||
}
|
||||
27
web_native/lib/core/imagini_application.dart
Normal file
27
web_native/lib/core/imagini_application.dart
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user