project conversion + general tidying of the example project

This commit is contained in:
Luke 2018-01-16 21:12:32 -08:00
parent b5ab39169f
commit 3eec11b73e
26 changed files with 17501 additions and 63 deletions

View File

@ -7,5 +7,17 @@ import io.flutter.plugin.common.PluginRegistry;
*/
public final class GeneratedPluginRegistrant {
public static void registerWith(PluginRegistry registry) {
if (alreadyRegisteredWith(registry)) {
return;
}
}
private static boolean alreadyRegisteredWith(PluginRegistry registry) {
final String key = GeneratedPluginRegistrant.class.getCanonicalName();
if (registry.hasPlugin(key)) {
return true;
}
registry.registrarFor(key);
return false;
}
}

View File

@ -0,0 +1 @@
{"assets/images/logo_fluro.png":["assets/images/logo_fluro.png","assets/images/2.0x/logo_fluro.png"],"assets/images/acc_boom.png":["assets/images/acc_boom.png","assets/images/2.0x/acc_boom.png"],"assets/fonts/Lazer84.ttf":["assets/fonts/Lazer84.ttf"]}

View File

@ -0,0 +1 @@
[{"fonts":[{"asset":"assets/fonts/Lazer84.ttf"}],"family":"Lazer84"}]

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

View File

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
41FA87031F2620DA005CDA4D /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 41FA87021F2620DA005CDA4D /* GeneratedPluginRegistrant.m */; };
@ -15,7 +16,6 @@
9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB31CF90195004384FC /* Generated.xcconfig */; };
9740EEBB1CF902C7004384FC /* app.flx in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB71CF902C7004384FC /* app.flx */; };
978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
@ -40,6 +40,7 @@
/* Begin PBXFileReference section */
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = "<group>"; };
41FA87011F2620DA005CDA4D /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
41FA87021F2620DA005CDA4D /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
@ -48,7 +49,6 @@
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
9740EEB71CF902C7004384FC /* app.flx */ = {isa = PBXFileReference; lastKnownFileType = file; name = app.flx; path = Flutter/app.flx; sourceTree = "<group>"; };
9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
@ -74,9 +74,9 @@
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
9740EEB71CF902C7004384FC /* app.flx */,
3B80C3931E831B6300D905FE /* App.framework */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
9740EEBA1CF902C7004384FC /* Flutter.framework */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
@ -187,10 +187,10 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9740EEBB1CF902C7004384FC /* app.flx in Resources */,
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
9740EEB51CF90195004384FC /* Generated.xcconfig in Resources */,
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,

View File

@ -7,7 +7,6 @@
#import <Flutter/Flutter.h>
@interface GeneratedPluginRegistrant : NSObject
+ (void)registerWithRegistry:(NSObject<FlutterPluginRegistry>*)registry;
@end

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import '../../config/application.dart';
@ -25,7 +25,7 @@ class AppComponentState extends State<AppComponent> {
static MethodChannel platform = const MethodChannel('channel:com.goposse.routersample/deeplink');
AppComponentState() {
Router router = new Router();
final router = new Router();
Routes.configureRoutes(router);
Application.router = router;
configureDeepLinker();

View File

@ -2,10 +2,9 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:flutter/material.dart';
import 'package:meta/meta.dart';

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import '../../helpers/color_helpers.dart';
@ -29,8 +29,8 @@ class DemoSimpleComponent extends StatelessWidget {
new Image(
image: new AssetImage("assets/images/acc_boom.png"),
color: ColorHelpers.blackOrWhiteContrastColor(color),
width: 350.0,
),
width: 260.0,
),
new Padding(
padding: new EdgeInsets.only(left: 50.0, right: 50.0, top: 15.0),
child: new Text(
@ -44,19 +44,24 @@ class DemoSimpleComponent extends StatelessWidget {
),
new Padding(
padding: new EdgeInsets.only(top: 15.0),
child: new FlatButton(
onPressed: () {
if (result == null) {
Navigator.pop(context);
} else {
Navigator.pop(context, result);
}
},
child: new Text(
"OK",
style: new TextStyle(
fontSize: 18.0,
color: ColorHelpers.blackOrWhiteContrastColor(color),
child: new ConstrainedBox(
constraints: new BoxConstraints(minHeight: 42.0),
child: new FlatButton(
highlightColor: ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(17),
splashColor: ColorHelpers.blackOrWhiteContrastColor(color).withAlpha(34),
onPressed: () {
if (result == null) {
Navigator.pop(context);
} else {
Navigator.pop(context, result);
}
},
child: new Text(
"OK",
style: new TextStyle(
fontSize: 18.0,
color: ColorHelpers.blackOrWhiteContrastColor(color),
),
),
),
),

View File

@ -2,46 +2,107 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'dart:async';
import '../../config/application.dart';
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class HomeComponent extends StatefulWidget {
@override
State createState() => new HomeComponentState();
}
class HomeComponentState extends State<HomeComponent> {
var _deepLinkOpacity = 1.0;
final _deepLinkURL = "fluro://deeplink?path=/message&text=fluro%20rocks%21%21";
final _daysOfWeek = const [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
];
Widget deepLinkWidget(BuildContext context) {
return new Stack(
children: <Widget>[
// copied widget
new AnimatedOpacity(
opacity: (_deepLinkOpacity - 1.0).abs(),
duration: new Duration(milliseconds: 400),
child: new Center(
child: new Text(
"Copied to clipboard!",
style: new TextStyle(
fontSize: 14.0,
color: const Color(0xFFFFFFFF),
fontWeight: FontWeight.w500,
),
),
),
),
// button widget
new AnimatedOpacity(
opacity: _deepLinkOpacity,
duration: new Duration(milliseconds: 250),
child: new Center(
child: new FlatButton(
highlightColor: const Color(0x11FFFFFF),
splashColor: const Color(0x22FFFFFF),
onPressed: () {
if (_deepLinkOpacity == 1.0) {
new Timer(new Duration(milliseconds: 2000), () {
setState(() {
_deepLinkOpacity = 1.0;
});
});
setState(() {
_deepLinkOpacity = 0.0;
});
final clipboardData = new ClipboardData(text: _deepLinkURL);
Clipboard.setData(clipboardData);
}
},
child: new Padding(
padding: new EdgeInsets.all(8.0),
child: new Text(
"Click here to copy a deep link url to the clipboard",
textAlign: TextAlign.center,
style: new TextStyle(
fontSize: 12.0,
color: const Color(0xCCFFFFFF),
),
),
),
),
),
),
],
);
}
class HomeComponent extends StatelessWidget {
@override
Widget build(BuildContext context) {
var menuWidgets = <Widget>[
new Padding(
padding: new EdgeInsets.only(bottom: 25.0),
padding: new EdgeInsets.only(bottom: 35.0),
child: new Image(image: new AssetImage("assets/images/logo_fluro.png"), width: 200.0),
),
menuButton(context, "Native Animation", "native"),
menuButton(context, "Preset (In from Left)", "preset-from-left"),
menuButton(context, "Preset (Fade In)", "preset-fade"),
menuButton(context, "Custom Transition", "custom"),
menuButton(context, "Function Call", "function-call"),
menuButton(context, "Navigator Result", "pop-result"),
menuButton(context, "Function Call", "function-call"),
new Padding(
padding: new EdgeInsets.only(top: 65.0, left: 60.0, right: 60.0),
child: new Center(
child: new ConstrainedBox(
constraints: new BoxConstraints.tightFor(height: 50.0),
child: new FlatButton(
onPressed: () {
},
child: new Text(
"Try going to fluro://deeplink?path=/message&text=fluro%20rocks%21%21",
textAlign: TextAlign.center,
style: new TextStyle(
fontSize: 10.0,
color: const Color(0xFFFFFFFF),
),
),
),
constraints: new BoxConstraints.tightFor(height: 60.0),
child: deepLinkWidget(context),
),
),
),
@ -61,12 +122,14 @@ class HomeComponent extends StatelessWidget {
return new Padding(
padding: new EdgeInsets.all(4.0),
child: new ConstrainedBox(
constraints: new BoxConstraints(minHeight: 32.0),
constraints: new BoxConstraints(minHeight: 42.0),
child: new FlatButton(
highlightColor: const Color(0x11FFFFFF),
splashColor: const Color(0x22FFFFFF),
child: new Text(
title,
style: new TextStyle(
color: const Color(0xFF004F8F),
color: const Color(0xAA001133),
),
),
onPressed: () {
@ -97,9 +160,9 @@ class HomeComponent extends StatelessWidget {
transitionType = TransitionType.fadeIn;
} else if (key == "pop-result") {
transitionType = TransitionType.native;
hexCode = "#407F7F";
message = "This screen should return the current weekday";
result = new DateTime.now().weekday.toString();
hexCode = "#7d41f4";
message = "When you close this screen you should see the current day of the week";
result = "Today is ${_daysOfWeek[new DateTime.now().weekday]}!";
}
String route = "/demo?message=$message&color_hex=$hexCode";

View File

@ -2,10 +2,9 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:fluro/fluro.dart';
class Application {

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import '../helpers/color_helpers.dart';

View File

@ -1,3 +1,10 @@
/*
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:fluro/fluro.dart';
import './route_handlers.dart';

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:flutter/material.dart';

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'components/app/app_component.dart';

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
library fluro;

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
part of fluro;
@ -42,8 +42,8 @@ enum RouteMatchType {
///
class RouteMatch {
RouteMatch({
@required this.matchType = RouteMatchType.noMatch,
this.route = null,
this.matchType = RouteMatchType.noMatch,
this.route,
this.errorMessage = "Unable to match route. Please check the logs."
});
final Route<dynamic> route;

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
part of fluro;
@ -18,8 +18,11 @@ enum TransitionType {
}
class Router {
static final appRouter = new Router();
/// The tree structure that stores the defined routes
RouteTree _routeTree = new RouteTree();
final RouteTree _routeTree = new RouteTree();
/// Generic handler for when a route has not been defined
Handler notFoundHandler;
@ -76,7 +79,7 @@ class Router {
}
///
RouteMatch matchRoute(BuildContext buildContext, String path, {RouteSettings routeSettings = null,
RouteMatch matchRoute(BuildContext buildContext, String path, {RouteSettings routeSettings,
TransitionType transitionType, Duration transitionDuration = const Duration(milliseconds: 250),
RouteTransitionsBuilder transitionsBuilder})
{

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
part of fluro;
@ -56,7 +56,7 @@ class RouteTreeNode {
class RouteTree {
// private
List<RouteTreeNode> _nodes = <RouteTreeNode>[];
final List<RouteTreeNode> _nodes = <RouteTreeNode>[];
bool _hasDefaultRoute = false;
// addRoute - add a route to the route tree

View File

@ -2,7 +2,7 @@
* fluro
* A Posse Production
* http://goposse.com
* Copyright (c) 2017 Posse Productions LLC. All rights reserved.
* Copyright (c) 2018 Posse Productions LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:flutter_test/flutter_test.dart';