Fix imports

This commit is contained in:
unknown 2018-05-17 12:49:52 -07:00
parent cc83239321
commit 1811c15b82
24 changed files with 150 additions and 58 deletions

View File

@ -2,7 +2,7 @@ import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import '../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
//import 'package:built_redux_sample/models/serializers.dart'; //import 'package:built_redux_sample/models/serializers.dart';
/// Loads and saves a List of Products using a text file stored on the device. /// Loads and saves a List of Products using a text file stored on the device.

View File

@ -2,10 +2,10 @@ import 'dart:async';
import 'dart:core'; import 'dart:core';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import '../../data/models/entities.dart'; import 'package:invoiceninja/data/models/entities.dart';
import '../../data/repositories/repositories.dart'; import 'package:invoiceninja/data/repositories/repositories.dart';
import '../../data/file_storage.dart'; import 'package:invoiceninja/data/file_storage.dart';
import '../../data/web_client.dart'; import 'package:invoiceninja/data/web_client.dart';
/// A class that glues together our local file storage and web client. It has a /// A class that glues together our local file storage and web client. It has a
/// clear responsibility: Load Products and Persist products. /// clear responsibility: Load Products and Persist products.

View File

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:core'; import 'dart:core';
import '../../data/models/entities.dart'; import 'package:invoiceninja/data/models/entities.dart';
/// A class that Loads and Persists products. The data layer of the app. /// A class that Loads and Persists products. The data layer of the app.
/// ///

View File

@ -1,7 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import '../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
/// A class that is meant to represent a Web Service you would call to fetch /// A class that is meant to represent a Web Service you would call to fetch
/// and persist Products to and from the cloud. /// and persist Products to and from the cloud.

View File

@ -6,6 +6,7 @@ class NinjaKeys {
static Key snackbarAction(String id) => Key('__snackbar_action_${id}__'); static Key snackbarAction(String id) => Key('__snackbar_action_${id}__');
static final dashboard = const Key('__dashboard__'); static final dashboard = const Key('__dashboard__');
static final loginScreen = const Key('__login_screen__');
static final clientList = const Key('__client_list__'); static final clientList = const Key('__client_list__');
static final productHome = const Key('__product_home__'); static final productHome = const Key('__product_home__');

View File

@ -2,9 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'redux/app/app_state.dart'; import 'redux/app/app_state.dart';
import 'ui/dashboard.dart'; import 'package:invoiceninja/ui/dashboard_screen.dart';
import 'ui/client/client_list.dart'; import 'package:invoiceninja/ui/client/client_list.dart';
import 'ui/product/product_home.dart'; import 'package:invoiceninja/ui/product/product_screen.dart';
import 'package:invoiceninja/ui/app/login_screen.dart';
import 'routes.dart'; import 'routes.dart';
import 'redux/product/product_actions.dart'; import 'redux/product/product_actions.dart';
import 'redux/product/product_middleware.dart'; import 'redux/product/product_middleware.dart';
@ -39,6 +40,13 @@ class InvoiceNinjaApp extends StatelessWidget {
theme: new ThemeData.dark(), theme: new ThemeData.dark(),
title: 'Invoice Ninja', title: 'Invoice Ninja',
routes: { routes: {
NinjaRoutes.login: (context) {
return StoreBuilder<AppState>(
builder: (context, store) {
return LoginScreen();
},
);
},
NinjaRoutes.dashboard: (context) { NinjaRoutes.dashboard: (context) {
return StoreBuilder<AppState>( return StoreBuilder<AppState>(
builder: (context, store) { builder: (context, store) {

View File

@ -1,6 +1,6 @@
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
import '../../redux/app/loading_reducer.dart'; import 'package:invoiceninja/redux/app/loading_reducer.dart';
import '../../redux/product/product_reducer.dart'; import 'package:invoiceninja/redux/product/product_reducer.dart';
// We create the State reducer by combining many smaller reducers into one! // We create the State reducer by combining many smaller reducers into one!
AppState appReducer(AppState state, action) { AppState appReducer(AppState state, action) {

View File

@ -1,5 +1,5 @@
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
@immutable @immutable
class AppState { class AppState {

View File

@ -1,5 +1,5 @@
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/product/product_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart';
final loadingReducer = combineReducers<bool>([ final loadingReducer = combineReducers<bool>([
TypedReducer<bool, ProductsLoadedAction>(_setLoaded), TypedReducer<bool, ProductsLoadedAction>(_setLoaded),

View File

@ -1,4 +1,4 @@
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
class LoadProductsAction {} class LoadProductsAction {}

View File

@ -1,11 +1,11 @@
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/product/product_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart';
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
import '../../data/repositories/repositories.dart'; import 'package:invoiceninja/data/repositories/repositories.dart';
import '../../data/repositories/product_repository.dart'; import 'package:invoiceninja/data/repositories/product_repository.dart';
import '../../data/file_storage.dart'; import 'package:invoiceninja/data/file_storage.dart';
import '../../redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
List<Middleware<AppState>> createStoreProductsMiddleware([ List<Middleware<AppState>> createStoreProductsMiddleware([
ProductsRepository repository = const ProductsRepositoryFlutter( ProductsRepository repository = const ProductsRepositoryFlutter(

View File

@ -1,7 +1,7 @@
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/product/product_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
final productsReducer = combineReducers<List<ProductEntity>>([ final productsReducer = combineReducers<List<ProductEntity>>([
/* /*

View File

@ -1,6 +1,6 @@
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
import '../../utils/optional.dart'; import 'package:invoiceninja/utils/optional.dart';
bool isLoadingSelector(AppState state) => state.isLoading; bool isLoadingSelector(AppState state) => state.isLoading;

View File

@ -1,5 +1,6 @@
class NinjaRoutes { class NinjaRoutes {
static final dashboard = "/"; static final login = "/";
static final dashboard = "/dashboard";
static final clientList = "/clientList"; static final clientList = "/clientList";
static final productList = "/productList"; static final productList = "/productList";
} }

View File

@ -2,8 +2,8 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
import '../../redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
class AppLoading extends StatelessWidget { class AppLoading extends StatelessWidget {
final Function(BuildContext context, bool isLoading) builder; final Function(BuildContext context, bool isLoading) builder;

View File

@ -0,0 +1,82 @@
import 'package:flutter/material.dart';
class LoginScreen extends StatefulWidget {
static String tag = 'login-page';
@override
_LoginScreenState createState() => new _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
final email = TextFormField(
keyboardType: TextInputType.emailAddress,
autofocus: false,
validator: (value) {
if (value.isEmpty) {
return 'This field is required';
}
},
decoration: InputDecoration(
labelText: 'Email',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
),
);
final password = TextFormField(
autofocus: false,
obscureText: true,
decoration: InputDecoration(
labelText: 'Password',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
),
);
final loginButton = Padding(
padding: EdgeInsets.symmetric(vertical: 16.0),
child: Material(
//borderRadius: BorderRadius.circular(30.0),
shadowColor: Colors.lightBlueAccent.shade100,
elevation: 5.0,
child: MaterialButton(
minWidth: 200.0,
height: 42.0,
onPressed: () {
//Navigator.of(context).pushNamed(HomeScreen.tag);
},
color: Colors.lightBlueAccent,
child: Text('Log In', style: TextStyle(color: Colors.white)),
),
),
);
/*
final forgotLabel = FlatButton(
child: Text(
'Forgot password?',
style: TextStyle(color: Colors.black54),
),
onPressed: () {},
);
*/
return Scaffold(
//backgroundColor: Colors.white,
body: Center(
child: ListView(
shrinkWrap: true,
padding: EdgeInsets.only(left: 24.0, right: 24.0),
children: <Widget>[
SizedBox(height: 48.0),
email,
SizedBox(height: 8.0),
password,
SizedBox(height: 24.0),
loginButton,
//forgotLabel
],
),
),
);
}
}

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../keys.dart'; import 'package:invoiceninja/keys.dart';
import '../../ui/app/sidebar.dart'; import 'package:invoiceninja/ui/app/sidebar.dart';
class ClientList extends StatelessWidget { class ClientList extends StatelessWidget {
ClientList() : super(key: NinjaKeys.clientList); ClientList() : super(key: NinjaKeys.clientList);

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../keys.dart'; import 'package:invoiceninja/keys.dart';
import '../ui/app/sidebar.dart'; import 'package:invoiceninja/ui/app/sidebar.dart';
class Dashboard extends StatelessWidget { class Dashboard extends StatelessWidget {
Dashboard() : super(key: NinjaKeys.dashboard); Dashboard() : super(key: NinjaKeys.dashboard);

View File

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
//import '../../containers/edit_product.dart'; //import 'package:invoiceninja/containers/edit_product.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
class DetailsScreen extends StatelessWidget { class DetailsScreen extends StatelessWidget {
final ProductEntity product; final ProductEntity product;

View File

@ -6,11 +6,11 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/product/product_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../ui/product/product_details.dart'; import 'package:invoiceninja/ui/product/product_details.dart';
import '../../redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
class ProductDetails extends StatelessWidget { class ProductDetails extends StatelessWidget {
final int id; final int id;

View File

@ -1,7 +1,7 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../keys.dart'; import 'package:invoiceninja/keys.dart';
class ProductItem extends StatelessWidget { class ProductItem extends StatelessWidget {
final DismissDirectionCallback onDismissed; final DismissDirectionCallback onDismissed;

View File

@ -1,11 +1,11 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../ui/app/app_loading.dart'; import 'package:invoiceninja/ui/app/app_loading.dart';
import '../../ui/product/product_details_vm.dart'; import 'package:invoiceninja/ui/product/product_details_vm.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../ui/app/loading_indicator.dart'; import 'package:invoiceninja/ui/app/loading_indicator.dart';
import '../../ui/product/product_item.dart'; import 'package:invoiceninja/ui/product/product_item.dart';
import '../../keys.dart'; import 'package:invoiceninja/keys.dart';
class ProductList extends StatelessWidget { class ProductList extends StatelessWidget {
final List<ProductEntity> products; final List<ProductEntity> products;

View File

@ -2,11 +2,11 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_redux/flutter_redux.dart'; import 'package:flutter_redux/flutter_redux.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import '../../redux/product/product_actions.dart'; import 'package:invoiceninja/redux/product/product_actions.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../ui/product/product_list.dart'; import 'package:invoiceninja/ui/product/product_list.dart';
import '../../redux/product/product_selectors.dart'; import 'package:invoiceninja/redux/product/product_selectors.dart';
import '../../redux/app/app_state.dart'; import 'package:invoiceninja/redux/app/app_state.dart';
class FilteredProducts extends StatelessWidget { class FilteredProducts extends StatelessWidget {
FilteredProducts({Key key}) : super(key: key); FilteredProducts({Key key}) : super(key: key);

View File

@ -3,9 +3,9 @@
// in the LICENSE file. // in the LICENSE file.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../data/models/models.dart'; import 'package:invoiceninja/data/models/models.dart';
import '../../keys.dart'; import 'package:invoiceninja/keys.dart';
import '../../ui/product/product_list_vm.dart'; import 'package:invoiceninja/ui/product/product_list_vm.dart';
class ProductHome extends StatelessWidget { class ProductHome extends StatelessWidget {
ProductHome() : super(key: NinjaKeys.productHome); ProductHome() : super(key: NinjaKeys.productHome);