Skip to content

Commit

Permalink
release: merge release into master (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
tnc1997 committed Mar 22, 2018
2 parents 2c9c29c + 8653a4b commit 9fa0ab2
Show file tree
Hide file tree
Showing 31 changed files with 1,483 additions and 11 deletions.
45 changes: 45 additions & 0 deletions avon_farm_foods.iml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,51 @@
<excludeFolder url="file://$MODULE_DIR$/packages" />
<excludeFolder url="file://$MODULE_DIR$/test/packages" />
</content>
<content url="file://$MODULE_DIR$/../flutter_flux">
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/build" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/com/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/com/yourcompany/flutterfluxexample/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/com/yourcompany/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/io/flutter/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/io/flutter/plugins/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/io/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/java/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/drawable/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/mipmap-hdpi/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/mipmap-mdpi/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/mipmap-xhdpi/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/mipmap-xxhdpi/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/mipmap-xxxhdpi/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/main/res/values/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/app/src/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/gradle/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/gradle/wrapper/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/android/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Flutter/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner.xcodeproj/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner.xcodeproj/project.xcworkspace/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner.xcodeproj/xcshareddata/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner.xcworkspace/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner/Assets.xcassets/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner/Base.lproj/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/Runner/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/ios/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/lib/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/example/test/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/test/packages" />
<excludeFolder url="file://$MODULE_DIR$/../flutter_flux/tool/packages" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" />
Expand Down
4 changes: 2 additions & 2 deletions avon_farm_foods_android.iml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
<sourceFolder url="file://$MODULE_DIR$/android/app/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/android/gen" isTestSource="false" generated="true" />
</content>
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
<orderEntry type="jdk" jdkName="Android API 26 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Flutter for Android" level="project" />
</component>
</module>
</module>
Binary file added images/home.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added images/splash_screen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions lib/enums/clear_basket_dialog_action.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enum ClearBasketDialogAction {
no,
yes,
}
4 changes: 4 additions & 0 deletions lib/enums/theme.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
enum AppTheme {
dark,
light,
}
99 changes: 96 additions & 3 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,108 @@
import 'dart:convert';

import 'package:avon_farm_foods/enums/theme.dart';
import 'package:avon_farm_foods/models/configuration.dart';
import 'package:avon_farm_foods/pages/basket.dart';
import 'package:avon_farm_foods/pages/checkout.dart';
import 'package:avon_farm_foods/pages/home.dart';
import 'package:avon_farm_foods/pages/orders.dart';
import 'package:avon_farm_foods/pages/products.dart';
import 'package:avon_farm_foods/pages/settings.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() {
runApp(
new FutureBuilder<SharedPreferences>(
builder: (
BuildContext context,
AsyncSnapshot<SharedPreferences> snapshot,
) {
return snapshot.hasData ? new MyApp(snapshot.data) : new SplashScreen();
},
future: SharedPreferences.getInstance(),
),
);
}

class MyApp extends StatefulWidget {
MyApp(this.preferences);

final SharedPreferences preferences;

@override
_MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
Configuration get _configuration {
if (widget.preferences.getString('configuration') == null) {
Configuration configuration = new Configuration();

_configurationUpdater(configuration);

return configuration;
} else {
return new Configuration.fromJson(
JSON.decode(
widget.preferences.getString('configuration'),
),
);
}
}

ThemeData get _theme {
switch (_configuration.theme) {
case AppTheme.dark:
return new ThemeData.dark();
case AppTheme.light:
return new ThemeData.light();
default:
return null;
}
}

void main() => runApp(new MyApp());
void _configurationUpdater(Configuration configuration) {
setState(() {
widget.preferences.setString(
'configuration',
JSON.encode(configuration),
);
});
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new HomePage(),
theme: new ThemeData.dark(),
routes: <String, WidgetBuilder>{
'/basket': (BuildContext context) => new BasketPage(),
'/checkout': (BuildContext context) => new CheckoutPage(),
'/orders': (BuildContext context) => new OrdersPage(),
'/products': (BuildContext context) => new ProductsPage(),
'/settings': (BuildContext context) {
return new SettingsPage(
_configuration,
_configurationUpdater,
);
},
},
theme: _theme,
title: 'Avon Farm Foods',
);
}
}

class SplashScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Container(
child: new Image.asset(
'images/splash_screen.png',
fit: BoxFit.cover,
),
),
);
}
}
10 changes: 10 additions & 0 deletions lib/models/checkout.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class Checkout {
String address;
int cardNumber;
int cvv;
String expiryDate;
String firstName;
String lastName;
String postcode;
int telephone;
}
19 changes: 19 additions & 0 deletions lib/models/configuration.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import 'package:avon_farm_foods/enums/theme.dart';
import 'package:json_annotation/json_annotation.dart';

part 'configuration.g.dart';

@JsonSerializable()
class Configuration extends Object with _$ConfigurationSerializerMixin {
Configuration({this.theme = AppTheme.dark}) : assert(theme != null);

final AppTheme theme;

factory Configuration.fromJson(Map<String, dynamic> json) {
return _$ConfigurationFromJson(json);
}

Configuration copyWith({AppTheme theme}) {
return new Configuration(theme: theme ?? this.theme);
}
}
21 changes: 21 additions & 0 deletions lib/models/configuration.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions lib/models/order.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import 'package:avon_farm_foods/models/product.dart';

class Order {
Order({this.id, this.date, this.delivery, this.products, this.total});

final int id;
final DateTime date;
final DateTime delivery;
final List<Product> products;
final double total;
}
9 changes: 9 additions & 0 deletions lib/models/page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:flutter/material.dart';

class Page {
Page({this.icon, this.route, this.title});

final Icon icon;
final String route;
final String title;
}
30 changes: 30 additions & 0 deletions lib/models/product.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
class Product implements Comparable<Product> {
Product({
this.description,
this.id,
this.isFavourite = false,
this.isInBasket = false,
this.isPopular = false,
this.name,
this.price,
this.quantity = 0,
this.url,
});

final String description;
final int id;
final bool isPopular;
final String name;
final double price;
final String url;

bool isFavourite;
bool isInBasket;
int quantity;

@override
int compareTo(Product other) => id - other.id;

bool operator ==(other) => other is Product && other.id == id;
int get hashCode => id.hashCode;
}
Loading

0 comments on commit 9fa0ab2

Please sign in to comment.