Initialize MVVM architecture

This commit is contained in:
Emeline G 2020-08-06 16:25:47 +02:00
parent 4d6ca678fc
commit 8257eadee5
10 changed files with 59 additions and 107 deletions

View File

@ -1,14 +1,15 @@
import 'package:astronote_app/screens/company_choice_screen.dart'; import 'file:///D:/AndroidStudioProjects/astronote_app/lib/services/log_in_services.dart';
import 'package:astronote_app/screens/dashboard_screen.dart'; import 'package:astronote_app/themes/style.dart';
import 'package:astronote_app/screens/log_in_screen.dart'; import 'package:astronote_app/views/company_choice.dart';
import 'package:astronote_app/providers/log_in.dart'; import 'package:astronote_app/views/dashboard.dart';
import 'package:astronote_app/theme/style.dart'; import 'package:astronote_app/views/log_in.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
void main() => runApp(MyApp()); void main() => runApp(MyApp());
class MyApp extends StatelessWidget { class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return MultiProvider( return MultiProvider(
@ -19,11 +20,11 @@ class MyApp extends StatelessWidget {
builder:(context, logIn, _) => MaterialApp( builder:(context, logIn, _) => MaterialApp(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
theme: appTheme(), theme: appTheme(),
home: logIn.isLog ? CompanyChoiceScreen() : LogInScreen(), home: logIn.isLog ? CompanyChoiceView() : LogInView(),
routes: { routes: {
"/logInScreen": (context) => LogInScreen(), "/logInScreen": (context) => LogInView(),
"/companyChoiceScreen": (context) => CompanyChoiceScreen(), "/companyChoiceScreen": (context) => CompanyChoiceView(),
"/dashboardScreen": (context) => DashBoardScreen() "/dashboardScreen": (context) => DashBoardView()
}, },
), ),
), ),

View File

@ -1,15 +1,15 @@
import 'package:astronote_app/models/companie.dart'; import 'package:astronote_app/models/company.dart';
class User { class UserDatas {
String lastname; String lastname;
List<Companie> companies; List<Companie> companies;
String firstname; String firstname;
String civilite; String civilite;
User({this.lastname, this.companies, this.firstname, this.civilite}); UserDatas({this.lastname, this.companies, this.firstname, this.civilite});
User.fromJson(Map<String, dynamic> json) { UserDatas.fromJson(Map<String, dynamic> json) {
lastname = json['lastname']; lastname = json['lastname'];
if (json['companies'] != null) { if (json['companies'] != null) {
companies = new List<Companie>(); companies = new List<Companie>();

View File

@ -1,59 +0,0 @@
import 'package:flutter/material.dart';
class DashBoardScreen extends StatefulWidget {
@override
_DashBoardScreenState createState() => _DashBoardScreenState();
}
class _DashBoardScreenState extends State<DashBoardScreen> {
int _selectedIndex = 0;
static const TextStyle optionStyle = TextStyle(fontSize: 30, fontWeight: FontWeight.bold);
static const List<Widget> _widgetOptions = <Widget>[
Text(
'Index 0: Accueil',
style: optionStyle,
),
Text(
'Index 1: Notes',
style: optionStyle,
),
Text(
'Index 2: Enseignes',
style: optionStyle,
),
];
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: _widgetOptions.elementAt(_selectedIndex),
),
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text('Accueil'),
),
BottomNavigationBarItem(
icon: Icon(Icons.add),
title: Text('Notes'),
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
title: Text('Enseignes'),
),
],
currentIndex: _selectedIndex,
selectedItemColor: Colors.indigo[900],
onTap: _onItemTapped,
),
);
}
}

View File

@ -1,6 +1,4 @@
import 'dart:convert'; import 'dart:convert';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
import 'package:astronote_app/models/user_datas.dart'; import 'package:astronote_app/models/user_datas.dart';
import 'package:astronote_app/models/credential.dart'; import 'package:astronote_app/models/credential.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -37,7 +35,6 @@ class LogIn with ChangeNotifier {
_cookie = response.headers['set-cookie']; _cookie = response.headers['set-cookie'];
_userCredentials = new Credential(url: url, login: login, password: password); _userCredentials = new Credential(url: url, login: login, password: password);
print(_userCredentials.toString()); print(_userCredentials.toString());
// await OpenLocalBdd();
return recoverUserDatas(urlApi); return recoverUserDatas(urlApi);
} else{ } else{
_cookie = null; _cookie = null;
@ -58,32 +55,9 @@ class LogIn with ChangeNotifier {
// If the server did return a 200 OK response then parse the JSON. // If the server did return a 200 OK response then parse the JSON.
final responseJson = json.decode(response.body); final responseJson = json.decode(response.body);
User userDatas = new User.fromJson(responseJson['datas']); UserDatas userDatas = new UserDatas.fromJson(responseJson['datas']);
print(userDatas.companies[0].toString()); print(userDatas.companies[0].toString());
} }
} }
// Future<Database> OpenLocalBdd() async {
// // Open the database and store the reference.
// final Future<Database> database = openDatabase(
// // Set the path to the database. Note: Using the `join` function from the
// // `path` package is best practice to ensure the path is correctly
// // constructed for each platform.
// join(await getDatabasesPath(), 'astronote_database.db'),
// onCreate: (db, version) {
// // Run the CREATE TABLE statement on the database.
// return db.execute(
// "CREATE TABLE credentials(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
// );
// },
// // Set the version. This executes the onCreate function and provides a
// // path to perform database upgrades and downgrades.
// version: 1,
//
// );
// print(await getDatabasesPath());
// await database;
// }
} }

21
lib/viewmodels/db.dart Normal file
View File

@ -0,0 +1,21 @@
// Future<Database> OpenLocalBdd() async {
// // Open the database and store the reference.
// final Future<Database> database = openDatabase(
// // Set the path to the database. Note: Using the `join` function from the
// // `path` package is best practice to ensure the path is correctly
// // constructed for each platform.
// join(await getDatabasesPath(), 'astronote_database.db'),
// onCreate: (db, version) {
// // Run the CREATE TABLE statement on the database.
// return db.execute(
// "CREATE TABLE credentials(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)",
// );
// },
// // Set the version. This executes the onCreate function and provides a
// // path to perform database upgrades and downgrades.
// version: 1,
//
// );
// print(await getDatabasesPath());
// await database;
// }

View File

@ -1,12 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:astronote_app/models/companie.dart'; import 'package:astronote_app/models/company.dart';
class CompanyChoiceScreen extends StatefulWidget { class CompanyChoiceView extends StatefulWidget {
@override @override
_CompanyChoiceScreenState createState() => _CompanyChoiceScreenState(); _CompanyChoiceViewState createState() => _CompanyChoiceViewState();
} }
class _CompanyChoiceScreenState extends State<CompanyChoiceScreen> { class _CompanyChoiceViewState extends State<CompanyChoiceView> {
Companie companies = new Companie(); Companie companies = new Companie();
@override @override

15
lib/views/dashboard.dart Normal file
View File

@ -0,0 +1,15 @@
import 'package:flutter/material.dart';
class DashBoardView extends StatefulWidget {
@override
_DashBoardViewState createState() => _DashBoardViewState();
}
class _DashBoardViewState extends State<DashBoardView> {
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: BottomAppBar(),
);
}
}

View File

@ -1,16 +1,16 @@
import 'package:astronote_app/providers/log_in.dart'; import 'file:///D:/AndroidStudioProjects/astronote_app/lib/services/log_in_services.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
class LogInScreen extends StatefulWidget { class LogInView extends StatefulWidget {
// static const routeName = '/logInScreen'; // static const routeName = '/logInScreen';
@override @override
_LogInScreenState createState() => _LogInScreenState(); _LogInViewState createState() => _LogInViewState();
} }
class _LogInScreenState extends State<LogInScreen> { class _LogInViewState extends State<LogInView> {
var _obscurePassword = true; var _obscurePassword = true;
var _isLoading = false; var _isLoading = false;