Merge pull request 'offline' (#5) from offline into master
continuous-integration/drone/push Build is failing Details

Reviewed-on: #5
pull/7/head
remrem 1 year ago
commit af07fc3958

@ -1,21 +1,26 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/modele/local_db/model.dart' as db; import 'package:smartfit_app_mobile/modele/local_db/db_impl.dart';
import 'package:smartfit_app_mobile/modele/local_db/get_web_db.dart'
if (dart.library.io) 'package:smartfit_app_mobile/modele/local_db/get_native_db.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:smartfit_app_mobile/modele/local_db/objectbox.dart';
import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
import 'package:smartfit_app_mobile/view/login/signup_view.dart'; import 'package:smartfit_app_mobile/view/login/signup_view.dart';
import 'package:smartfit_app_mobile/view/main_tab/main_tab_view.dart'; import 'package:smartfit_app_mobile/view/main_tab/main_tab_view.dart';
late ObjectBox localDB; late DbImpl localDB;
Future<void> main() async { Future<void> main() async {
// ObjectBox
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
localDB = await ObjectBox.create();
await localDB.init(); if (!kIsWeb) {
localDB.configBox.put(db.Config(0, true)); DbImpl tmp = getDbImpl();
localDB = await tmp.create();
await localDB.init();
localDB.initConfig();
}
runApp(ChangeNotifierProvider( runApp(ChangeNotifierProvider(
create: (context) => User(), child: const MyApp())); create: (context) => User(), child: const MyApp()));
@ -29,21 +34,23 @@ class MyApp extends StatelessWidget {
Widget viewToDisplay = const SignUpView(); Widget viewToDisplay = const SignUpView();
// Skip sign-up + fill provider if user already connected // Skip sign-up + fill provider if user already connected
if (localDB.hasUser()) { if (!kIsWeb) {
final db.User user = localDB.userBox.get(1); if (localDB.hasUser()) {
final userActivities = localDB.loadActivities(); final User user = localDB.getUser();
final userActivities = localDB.getAllActivities();
context.watch<User>().username = user.username; context.watch<User>().username = user.username;
context.watch<User>().email = user.email; context.watch<User>().email = user.email;
context.watch<User>().token = user.token; context.watch<User>().token = user.token;
context.watch<User>().listActivity = userActivities; context.watch<User>().listActivity = userActivities;
stdout.write("===== USER =====\n"); stdout.write("===== USER =====\n");
stdout.write("Username: ${user.username}\n"); stdout.write("Username: ${user.username}\n");
stdout.write("Email: ${user.email}\n"); stdout.write("Email: ${user.email}\n");
stdout.write("Token: ${user.token}\n"); stdout.write("Token: ${user.token}\n");
viewToDisplay = const MainTabView(); viewToDisplay = const MainTabView();
}
} }
return MaterialApp( return MaterialApp(

@ -1,5 +1,6 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart'; import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart';
import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/modele/api/request_api.dart'; import 'package:smartfit_app_mobile/modele/api/request_api.dart';
@ -18,6 +19,7 @@ class ApiWrapper {
"It seems like you are lost far away in the universe, no connection found :)"; "It seems like you are lost far away in the universe, no connection found :)";
// HELPERS // HELPERS
// TODO: Change check online for flutterWeb
Future<bool> isOnline() async { Future<bool> isOnline() async {
try { try {
final result = await InternetAddress.lookup('example.com') final result = await InternetAddress.lookup('example.com')
@ -27,15 +29,23 @@ class ApiWrapper {
} }
} on SocketException catch (_) { } on SocketException catch (_) {
return false; return false;
} on UnsupportedError catch (_) {
return true;
} }
return true; return true;
} }
Future<void> init() async { Future<void> init() async {
// TODO: Fait à la pisse en despi (je voulais juste dormir)
if (kIsWeb) {
api = RequestApi();
return;
}
if (await isOnline()) { if (await isOnline()) {
stdout.write("(API) "); stdout.write("(API) ");
api = RequestApi(); api = RequestApi();
} else if (localDB.getSaveLocally()) { } else if (!kIsWeb && localDB.getSaveLocally()) {
stdout.write("(LOCAL) "); stdout.write("(LOCAL) ");
api = RequestLocal(); api = RequestLocal();
} else { } else {

@ -0,0 +1,95 @@
import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/modele/local_db/db_impl.dart';
import 'package:smartfit_app_mobile/modele/user.dart';
class DbDummy implements DbImpl {
DbDummy._create();
DbDummy();
@override
Future<DbDummy> create() async {
return DbDummy._create();
}
@override
Future<void> init() {
throw Exception();
}
// ==== USER ====
@override
void addUser(String username, String email, String token) {
throw Exception();
}
@override
User getUser() {
throw Exception();
}
@override
bool hasUser() {
throw Exception();
}
@override
void deleteUser() {
throw Exception();
}
@override
void setUserMail(String email) {
throw Exception();
}
@override
void setUserName(String username) {
throw Exception();
}
@override
void setUserToken(String token) {
throw Exception();
}
// ==== ACTIVITY ====
@override
void addActivity(String uuid, String filename, String category, String info) {
throw Exception();
}
@override
void removeActivity(String uuid) {
throw Exception();
}
@override
void removeAllActivities() {
throw Exception();
}
@override
String getActivityFilenameByUuid(String uuid) {
throw Exception();
}
@override
List<ActivityOfUser> getAllActivities() {
throw Exception();
}
// ==== CONFIG ====
@override
void initConfig() {
throw Exception();
}
@override
void setSaveLocally(bool saveLocally) {
throw Exception();
}
@override
bool getSaveLocally() {
throw Exception();
}
}

@ -0,0 +1,31 @@
import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/modele/activity.dart';
abstract class DbImpl {
DbImpl._create();
Future<DbImpl> create();
Future<void> init();
// ==== USER ====
void addUser(String username, String email, String token);
User getUser();
bool hasUser();
void deleteUser();
void setUserMail(String email);
void setUserName(String username);
void setUserToken(String token);
// ==== ACTIVITY ====
void addActivity(String uuid, String filename, String category, String info);
void removeActivity(String uuid);
void removeAllActivities();
String getActivityFilenameByUuid(String uuid);
List<ActivityOfUser> getAllActivities();
// ==== CONFIG ====
void initConfig();
void setSaveLocally(bool saveLocally);
bool getSaveLocally();
}

@ -0,0 +1,7 @@
import 'package:smartfit_app_mobile/modele/local_db/db_impl.dart';
import 'package:smartfit_app_mobile/modele/local_db/objectbox.dart';
DbImpl getDbImpl() {
DbImpl db = ObjectBox();
return db;
}

@ -0,0 +1,7 @@
import 'package:smartfit_app_mobile/modele/local_db/db_impl.dart';
import 'package:smartfit_app_mobile/modele/local_db/db_dummy.dart';
DbImpl getDbImpl() {
DbImpl db = DbDummy();
return db;
}

@ -1,14 +1,16 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:smartfit_app_mobile/modele/user.dart';
import 'package:smartfit_app_mobile/modele/activity.dart'; import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart'; import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart';
import 'package:smartfit_app_mobile/objectbox.g.dart'; import 'package:smartfit_app_mobile/objectbox.g.dart';
import 'package:path/path.dart' as p; import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:smartfit_app_mobile/modele/local_db/model.dart'; import 'package:smartfit_app_mobile/modele/local_db/model.dart' as db;
import 'package:smartfit_app_mobile/modele/local_db/db_impl.dart';
class ObjectBox { class ObjectBox implements DbImpl {
late final Store store; late final Store store;
late final Box userBox; late final Box userBox;
late final Box activityBox; late final Box activityBox;
@ -17,54 +19,75 @@ class ObjectBox {
ObjectBox._create(this.store); ObjectBox._create(this.store);
static Future<ObjectBox> create() async { ObjectBox();
@override
Future<ObjectBox> create() async {
final docsDir = await getApplicationDocumentsDirectory(); final docsDir = await getApplicationDocumentsDirectory();
final store = await openStore(directory: p.join(docsDir.path, "database")); final store = await openStore(directory: p.join(docsDir.path, "database"));
return ObjectBox._create(store); return ObjectBox._create(store);
} }
init() async { @override
Future<void> init() async {
applicationDocumentDir = await getApplicationDocumentsDirectory(); applicationDocumentDir = await getApplicationDocumentsDirectory();
userBox = store.box<User>(); userBox = store.box<db.User>();
activityBox = store.box<Activity>(); activityBox = store.box<db.Activity>();
configBox = store.box<Config>(); configBox = store.box<db.Config>();
} }
// ===== USER ===== // ===== USER =====
@override
bool hasUser() { bool hasUser() {
return !userBox.isEmpty(); return !userBox.isEmpty();
} }
@override
User getUser() {
db.User userRes = userBox.get(1);
return User.create(userRes.username, userRes.email, userRes.token);
}
@override
void setUserMail(String email) { void setUserMail(String email) {
User user = userBox.get(1); db.User user = userBox.get(1);
user.email = email; user.email = email;
userBox.put(user); userBox.put(user);
} }
@override
void setUserName(String username) { void setUserName(String username) {
User user = userBox.get(1); db.User user = userBox.get(1);
user.username = username; user.username = username;
userBox.put(user); userBox.put(user);
} }
@override
void setUserToken(String token) { void setUserToken(String token) {
User user = userBox.get(1); db.User user = userBox.get(1);
user.token = token; user.token = token;
userBox.put(user); userBox.put(user);
} }
@override
void deleteUser() { void deleteUser() {
userBox.removeAll(); userBox.removeAll();
} }
@override
void addUser(String username, String email, String token) { void addUser(String username, String email, String token) {
userBox.put(User(0, username, email, token)); userBox.put(db.User(0, username, email, token));
} }
// ===== Activity ===== // ===== Activity =====
void addActivity(Activity newActivity) { @override
void addActivity(String uuid, String filename, String category, String info) {
db.Activity act =
db.Activity(0, uuid, filename, category, jsonEncode(info));
try { try {
activityBox.put(newActivity); activityBox.put(act);
} on ObjectBoxException { } on ObjectBoxException {
print("Activity already exists"); print("Activity already exists");
} catch (e) { } catch (e) {
@ -73,35 +96,34 @@ class ObjectBox {
} }
// TODO: try catch // TODO: try catch
@override
void removeActivity(String uuid) { void removeActivity(String uuid) {
final Query query = activityBox.query(Activity_.uuid.equals(uuid)).build(); final Query query = activityBox.query(Activity_.uuid.equals(uuid)).build();
final Activity act = query.findFirst(); final db.Activity act = query.findFirst();
activityBox.remove(act.id); activityBox.remove(act.id);
} }
@override
String getActivityFilenameByUuid(String uuid) { String getActivityFilenameByUuid(String uuid) {
final Query query = activityBox.query(Activity_.uuid.equals(uuid)).build(); final Query query = activityBox.query(Activity_.uuid.equals(uuid)).build();
final Activity act = query.findFirst(); final db.Activity act = query.findFirst();
return act.filename; return act.filename;
} }
List<Activity> getAllActivities() { @override
// TODO: Transform db.Activity to ActivityOfUser
throw Exception("Not implemented yet");
}
void removeAllActivities() { void removeAllActivities() {
activityBox.removeAll(); activityBox.removeAll();
} }
// ===== FIT Files ===== // ===== FIT Files =====
List<ActivityOfUser> loadActivities() { @override
List<ActivityOfUser> getAllActivities() {
List<dynamic> activityDBList = activityBox.getAll(); List<dynamic> activityDBList = activityBox.getAll();
List<ActivityOfUser> userActivityList = List.empty(growable: true); List<ActivityOfUser> userActivityList = List.empty(growable: true);
for (Activity act in activityDBList) { for (db.Activity act in activityDBList) {
ActivityInfo actInfo = ActivityInfo.fromJson(jsonDecode(act.info)); ActivityInfo actInfo = ActivityInfo.fromJson(jsonDecode(act.info));
userActivityList userActivityList
.add(ActivityOfUser(actInfo, act.category, act.uuid, act.filename)); .add(ActivityOfUser(actInfo, act.category, act.uuid, act.filename));
@ -111,15 +133,23 @@ class ObjectBox {
} }
// ===== Config ===== // ===== Config =====
@override
void initConfig() {
db.Config config = db.Config(0, true);
configBox.put(config);
}
@override
void setSaveLocally(bool saveLocally) { void setSaveLocally(bool saveLocally) {
Config config = configBox.get(1); db.Config config = configBox.get(1);
config.saveLocally = saveLocally; config.saveLocally = saveLocally;
configBox.put(config); configBox.put(config);
stdout.write("(Config) setSaveLocally: $saveLocally\n"); stdout.write("(Config) setSaveLocally: $saveLocally\n");
} }
@override
bool getSaveLocally() { bool getSaveLocally() {
Config config = configBox.get(1); db.Config config = configBox.get(1);
stdout.write("(Config) getSaveLocally: ${config.saveLocally}\n"); stdout.write("(Config) getSaveLocally: ${config.saveLocally}\n");
return config.saveLocally; return config.saveLocally;
} }

@ -1,9 +1,10 @@
import 'dart:convert'; import 'dart:convert';
import 'package:smartfit_app_mobile/modele/activity.dart';
import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart'; import 'package:smartfit_app_mobile/modele/activity_info/activity_info.dart';
import 'package:smartfit_app_mobile/modele/activity_saver.dart'; import 'package:smartfit_app_mobile/modele/activity_saver.dart';
import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart'; import 'package:smartfit_app_mobile/modele/api/i_data_strategy.dart';
import 'package:smartfit_app_mobile/modele/local_db/model.dart';
import 'package:tuple/tuple.dart'; import 'package:tuple/tuple.dart';
import 'package:smartfit_app_mobile/modele/user.dart';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
@ -11,7 +12,7 @@ import 'package:smartfit_app_mobile/main.dart';
class RequestLocal implements IDataStrategy { class RequestLocal implements IDataStrategy {
@override @override
Future<Tuple2> getInfoUser(String token) async { Future<Tuple2> getInfoUser(String token) async {
final User user = localDB.userBox.get(1); final User user = localDB.getUser();
Map<String, String> json = {"email": user.email, "username": user.username}; Map<String, String> json = {"email": user.email, "username": user.username};
return Tuple2(true, jsonEncode(json)); return Tuple2(true, jsonEncode(json));
} }
@ -27,15 +28,15 @@ class RequestLocal implements IDataStrategy {
@override @override
Future<Tuple2> getFiles(String token) async { Future<Tuple2> getFiles(String token) async {
final List<dynamic> activities = localDB.activityBox.getAll(); final List<ActivityOfUser> activities = localDB.getAllActivities();
List<Map<String, dynamic>> jsonList = List.empty(growable: true); List<Map<String, dynamic>> jsonList = List.empty(growable: true);
for (Activity act in activities) { for (ActivityOfUser act in activities) {
Map<String, dynamic> json = { Map<String, dynamic> json = {
"uuid": act.uuid, "uuid": act.fileUuid,
"filename": act.filename, "filename": act.nameFile,
"category": act.category, "category": act.category,
"info": act.info "info": act.activityInfo
}; };
jsonList.add(json); jsonList.add(json);
} }

@ -9,6 +9,10 @@ class User extends ChangeNotifier {
List<ActivityOfUser> listActivity = List.empty(growable: true); List<ActivityOfUser> listActivity = List.empty(growable: true);
ManagerSelectedActivity managerSelectedActivity = ManagerSelectedActivity(); ManagerSelectedActivity managerSelectedActivity = ManagerSelectedActivity();
User();
User.create(String username, String email, String token);
void addActivity(ActivityOfUser activity) { void addActivity(ActivityOfUser activity) {
listActivity.add(activity); listActivity.add(activity);
notifyListeners(); notifyListeners();

@ -1,8 +1,8 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
import 'package:smartfit_app_mobile/modele/api/api_wrapper.dart'; import 'package:smartfit_app_mobile/modele/api/api_wrapper.dart';
import 'package:smartfit_app_mobile/modele/activity_saver.dart'; import 'package:smartfit_app_mobile/modele/activity_saver.dart';
import 'package:smartfit_app_mobile/modele/helper.dart'; import 'package:smartfit_app_mobile/modele/helper.dart';
import 'package:smartfit_app_mobile/modele/local_db/model.dart' as db;
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'dart:typed_data'; import 'dart:typed_data';
@ -74,8 +74,9 @@ class ListActivityUtile {
element["filename"].toString())); element["filename"].toString()));
// Save to local db // Save to local db
localDB.addActivity(db.Activity(0, element["uuid"], element["filename"], if (!kIsWeb)
element["category"], jsonEncode(element["info"]))); localDB.addActivity(element["uuid"], element["filename"],
element["category"], jsonEncode(element["info"]));
} }
return const Tuple2(true, "Yeah"); return const Tuple2(true, "Yeah");
} }

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
@ -165,8 +166,9 @@ class _MobileLoginView extends State<MobileLoginView> {
"Impossible de récupéré les données de l'utilisateur - {$infoUser.item2}"); "Impossible de récupéré les données de l'utilisateur - {$infoUser.item2}");
} else { } else {
util.fillUser(context, infoUser.item2, result.item2); util.fillUser(context, infoUser.item2, result.item2);
localDB.addUser(infoUser.item2["username"], if (!kIsWeb)
infoUser.item2["email"], result.item2); localDB.addUser(infoUser.item2["username"],
infoUser.item2["email"], result.item2);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:smartfit_app_mobile/common/colo_extension.dart'; import 'package:smartfit_app_mobile/common/colo_extension.dart';
@ -170,8 +171,9 @@ class _WebLoginView extends State<WebLoginView> {
"Impossible de récupéré les données de l'utilisateur - {$infoUser.item2}"); "Impossible de récupéré les données de l'utilisateur - {$infoUser.item2}");
} else { } else {
util.fillUser(context, infoUser.item2, result.item2); util.fillUser(context, infoUser.item2, result.item2);
localDB.addUser(infoUser.item2["username"], if (!kIsWeb)
infoUser.item2["email"], result.item2); localDB.addUser(infoUser.item2["username"],
infoUser.item2["email"], result.item2);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/common_widget/container/profile/profile_switch.dart'; import 'package:smartfit_app_mobile/common_widget/container/profile/profile_switch.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -21,6 +22,8 @@ class ProfileViewAllPlatforme extends StatefulWidget {
} }
class _ProfileViewAllPlatforme extends State<ProfileViewAllPlatforme> { class _ProfileViewAllPlatforme extends State<ProfileViewAllPlatforme> {
bool isNative = !kIsWeb;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
String username = context.watch<User>().username; String username = context.watch<User>().username;
@ -58,8 +61,11 @@ class _ProfileViewAllPlatforme extends State<ProfileViewAllPlatforme> {
), ),
// TODO: Download/Delete (local) all users files on toggle ? // TODO: Download/Delete (local) all users files on toggle ?
// TODO: Display size of download in Mo // TODO: Display size of download in Mo
const ProfileSwitch( Visibility(
"Offline mode", "Save your files locally", "local_save.png"), visible: isNative,
child: const ProfileSwitch("Offline mode",
"Save your files locally", "local_save.png"),
),
const SizedBox( const SizedBox(
height: 25, height: 25,
), ),

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/modele/api/api_wrapper.dart'; import 'package:smartfit_app_mobile/modele/api/api_wrapper.dart';
@ -119,7 +120,8 @@ class _MobileChangeEmailViewState extends State<MobileChangeEmailView> {
if (res) { if (res) {
Provider.of<User>(context, listen: false).email = Provider.of<User>(context, listen: false).email =
controllerTextEmail.text; controllerTextEmail.text;
localDB.setUserMail(controllerTextEmail.text); if (!kIsWeb)
localDB.setUserMail(controllerTextEmail.text);
} }
setState(() {}); setState(() {});
}), }),

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -118,7 +119,9 @@ class _MobileChangeUsernameViewState extends State<MobileChangeUsernameView> {
if (res) { if (res) {
Provider.of<User>(context, listen: false) Provider.of<User>(context, listen: false)
.username = controllerTextUsername.text; .username = controllerTextUsername.text;
localDB.setUserName(controllerTextUsername.text); if (!kIsWeb)
localDB
.setUserName(controllerTextUsername.text);
} }
setState(() {}); setState(() {});
}), }),

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -117,7 +118,8 @@ class _WebChangeEmailViewState extends State<WebChangeEmailView> {
if (res) { if (res) {
Provider.of<User>(context, listen: false).email = Provider.of<User>(context, listen: false).email =
controllerTextEmail.text; controllerTextEmail.text;
localDB.setUserMail(controllerTextEmail.text); if (!kIsWeb)
localDB.setUserMail(controllerTextEmail.text);
} }
setState(() {}); setState(() {});
}), }),

@ -1,3 +1,4 @@
import 'package:flutter/foundation.dart';
import 'package:smartfit_app_mobile/main.dart'; import 'package:smartfit_app_mobile/main.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smartfit_app_mobile/modele/user.dart'; import 'package:smartfit_app_mobile/modele/user.dart';
@ -119,7 +120,9 @@ class _WebChangeUsernameViewState extends State<WebChangeUsernameView> {
if (res) { if (res) {
Provider.of<User>(context, listen: false) Provider.of<User>(context, listen: false)
.username = controllerTextUsername.text; .username = controllerTextUsername.text;
localDB.setUserName(controllerTextUsername.text); if (!kIsWeb)
localDB
.setUserName(controllerTextUsername.text);
} }
setState(() {}); setState(() {});
}), }),

Loading…
Cancel
Save