|
|
@ -1,3 +1,5 @@
|
|
|
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:file_picker/file_picker.dart';
|
|
|
|
import 'package:file_picker/file_picker.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
@ -5,9 +7,10 @@ import 'package:smartfit_app_mobile/common/colo_extension.dart';
|
|
|
|
import 'package:smartfit_app_mobile/modele/activity.dart';
|
|
|
|
import 'package:smartfit_app_mobile/modele/activity.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';
|
|
|
|
import 'package:smartfit_app_mobile/modele/manager_file.dart';
|
|
|
|
|
|
|
|
import 'package:smartfit_app_mobile/modele/user.dart';
|
|
|
|
import 'package:smartfit_app_mobile/modele/user.dart';
|
|
|
|
import 'package:smartfit_app_mobile/common_widget/container/workout_row.dart';
|
|
|
|
import 'package:smartfit_app_mobile/common_widget/container/workout_row.dart';
|
|
|
|
|
|
|
|
import 'package:smartfit_app_mobile/modele/utile/list_activity.dart/list_activity_utile.dart';
|
|
|
|
|
|
|
|
import 'package:tuple/tuple.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class MobileListActivity extends StatefulWidget {
|
|
|
|
class MobileListActivity extends StatefulWidget {
|
|
|
|
const MobileListActivity({Key? key}) : super(key: key);
|
|
|
|
const MobileListActivity({Key? key}) : super(key: key);
|
|
|
@ -19,8 +22,9 @@ class MobileListActivity extends StatefulWidget {
|
|
|
|
class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
FilePickerResult? result;
|
|
|
|
FilePickerResult? result;
|
|
|
|
IDataStrategy strategy = RequestApi();
|
|
|
|
IDataStrategy strategy = RequestApi();
|
|
|
|
ManagerFile _managerFile = ManagerFile();
|
|
|
|
final ListActivityUtile _utile = ListActivityUtile();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
Future<void> readFile(String nom) async {
|
|
|
|
Future<void> readFile(String nom) async {
|
|
|
|
PlatformFile t = result!.files.single;
|
|
|
|
PlatformFile t = result!.files.single;
|
|
|
|
String? y = t.path;
|
|
|
|
String? y = t.path;
|
|
|
@ -28,18 +32,61 @@ class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
print("t");
|
|
|
|
print("t");
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
List<dynamic> result = await _managerFile.readFitFile(y!);
|
|
|
|
List<dynamic> result = await _managerFile.readFitFile(y!);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Upload the file and Syncronise (getFiles())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
strategy.uploadFile(context.watch<User>().token, File(y));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
|
|
|
|
.addActivity(ActivityOfUser("Random date", "$nom categorie !"));
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
.addActivity(ActivityOfUser(nom, result));
|
|
|
|
.listActivity
|
|
|
|
|
|
|
|
.last
|
|
|
|
|
|
|
|
.contentActivity = result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void addFile(String path) async {
|
|
|
|
|
|
|
|
Tuple2<bool, String> result = await strategy.uploadFile(
|
|
|
|
|
|
|
|
Provider.of<User>(context, listen: false).token, File(path));
|
|
|
|
|
|
|
|
if (result.item1 == false) {
|
|
|
|
|
|
|
|
// Afficher msg d'erreur
|
|
|
|
|
|
|
|
print("Upload - ${result.item2}");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
getFiles();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List lastWorkoutArr = [];
|
|
|
|
void getFiles() async {
|
|
|
|
|
|
|
|
Tuple2 result = await strategy
|
|
|
|
|
|
|
|
.getFiles(Provider.of<User>(context, listen: false).token);
|
|
|
|
|
|
|
|
if (result.item1 == false) {
|
|
|
|
|
|
|
|
print("GetFiles - ${result.item2}");
|
|
|
|
|
|
|
|
// Afficher une message d'erreur
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Provider.of<User>(context, listen: false).listActivity.clear();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Map<String, dynamic> element in result.item2) {
|
|
|
|
|
|
|
|
Provider.of<User>(context, listen: false).addActivity(ActivityOfUser(
|
|
|
|
|
|
|
|
element["creation_date"].toString(),
|
|
|
|
|
|
|
|
element["category"].toString(),
|
|
|
|
|
|
|
|
element["uuid"].toString(),
|
|
|
|
|
|
|
|
element["filename"].toString()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
_utile.getContentOnTheFirstFile(context);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
var media = MediaQuery.of(context).size;
|
|
|
|
var media = MediaQuery.of(context).size;
|
|
|
|
int firstActivityIndex = 0;
|
|
|
|
int firstActivityIndex = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Provider.of<User>(context).listActivity.isNotEmpty) {
|
|
|
|
|
|
|
|
_utile.getContentOnTheFirstFile(context);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Scaffold(
|
|
|
|
return Scaffold(
|
|
|
|
backgroundColor: TColor.white,
|
|
|
|
backgroundColor: TColor.white,
|
|
|
|
body: SingleChildScrollView(
|
|
|
|
body: SingleChildScrollView(
|
|
|
@ -60,16 +107,23 @@ class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
fontSize: 16,
|
|
|
|
fontSize: 16,
|
|
|
|
fontWeight: FontWeight.w700),
|
|
|
|
fontWeight: FontWeight.w700),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
|
|
|
|
TextButton(
|
|
|
|
|
|
|
|
onPressed: getFiles,
|
|
|
|
|
|
|
|
child: Text("Get activity",
|
|
|
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
|
|
|
color: TColor.gray,
|
|
|
|
|
|
|
|
fontSize: 14,
|
|
|
|
|
|
|
|
fontWeight: FontWeight.w700))),
|
|
|
|
TextButton(
|
|
|
|
TextButton(
|
|
|
|
onPressed: () async {
|
|
|
|
onPressed: () async {
|
|
|
|
result = await FilePicker.platform.pickFiles();
|
|
|
|
FilePickerResult? result =
|
|
|
|
if (result == null) {
|
|
|
|
await FilePicker.platform.pickFiles();
|
|
|
|
print("No file selected");
|
|
|
|
if (result != null) {
|
|
|
|
|
|
|
|
addFile(result.files.single.path!);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
for (var element in result!.files) {
|
|
|
|
print("Picker");
|
|
|
|
readFile(element.name);
|
|
|
|
// msg d'erreur
|
|
|
|
print(element.name);
|
|
|
|
// User canceled the picker
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
child: Text(
|
|
|
|
child: Text(
|
|
|
@ -86,7 +140,7 @@ class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
? Column(
|
|
|
|
? Column(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
children: [
|
|
|
|
SizedBox(height: 20),
|
|
|
|
const SizedBox(height: 20),
|
|
|
|
Text(
|
|
|
|
Text(
|
|
|
|
"Vous n'avez pas d'activités pour le moment, veuillez en ajouter.",
|
|
|
|
"Vous n'avez pas d'activités pour le moment, veuillez en ajouter.",
|
|
|
|
style: TextStyle(
|
|
|
|
style: TextStyle(
|
|
|
@ -109,7 +163,7 @@ class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
var activityObj =
|
|
|
|
var activityObj =
|
|
|
|
Provider.of<User>(context, listen: true)
|
|
|
|
Provider.of<User>(context, listen: true)
|
|
|
|
.listActivity[index] as ActivityOfUser;
|
|
|
|
.listActivity[index];
|
|
|
|
var activityMap = activityObj.toMap();
|
|
|
|
var activityMap = activityObj.toMap();
|
|
|
|
|
|
|
|
|
|
|
|
bool isFirstActivity = false;
|
|
|
|
bool isFirstActivity = false;
|
|
|
@ -136,7 +190,7 @@ class _MobileListActivity extends State<MobileListActivity> {
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
.removeActivity(activityObj);
|
|
|
|
.removeActivity(activityObj);
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
Provider.of<User>(context, listen: false)
|
|
|
|
.insertActivity(0, activityObj);
|
|
|
|
.insertActivityTop(activityObj, context);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
isFirstActivity: isFirstActivity,
|
|
|
|
isFirstActivity: isFirstActivity,
|
|
|
|
),
|
|
|
|
),
|
|
|
|