Clean code + wip handle quizz section type
This commit is contained in:
parent
5ce70d6ead
commit
d78873c9d4
@ -3,7 +3,7 @@ import 'dart:io';
|
|||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
import 'package:mymuseum_visitapp/Screens/Article/article_page.dart';
|
||||||
import 'package:mymuseum_visitapp/app_context.dart';
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
import 'package:mymuseum_visitapp/constants.dart';
|
import 'package:mymuseum_visitapp/constants.dart';
|
||||||
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
||||||
|
|||||||
@ -319,8 +319,8 @@ class DatabaseHelper {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
ArticleRead getArticleReadFromDB(dynamic element) {
|
SectionRead getArticleReadFromDB(dynamic element) {
|
||||||
return ArticleRead(
|
return SectionRead(
|
||||||
id: element["id"],
|
id: element["id"],
|
||||||
readTime: element["readTime"]
|
readTime: element["readTime"]
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:manager_api/api.dart';
|
import 'package:manager_api/api.dart';
|
||||||
|
|
||||||
class ArticleRead {
|
class SectionRead {
|
||||||
String id = "";
|
String id = "";
|
||||||
int readTime;
|
int readTime;
|
||||||
|
|
||||||
ArticleRead({required this.id, required this.readTime});
|
SectionRead({required this.id, required this.readTime});
|
||||||
|
|
||||||
Map<String, dynamic> toMap() {
|
Map<String, dynamic> toMap() {
|
||||||
return {
|
return {
|
||||||
@ -14,8 +14,8 @@ class ArticleRead {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
factory ArticleRead.fromJson(Map<String, dynamic> json) {
|
factory SectionRead.fromJson(Map<String, dynamic> json) {
|
||||||
return ArticleRead(
|
return SectionRead(
|
||||||
id: json['id'] as String,
|
id: json['id'] as String,
|
||||||
readTime: json['readTime'] as int
|
readTime: json['readTime'] as int
|
||||||
);
|
);
|
||||||
@ -23,6 +23,6 @@ class ArticleRead {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'ArticleRead{id: $id, readTime: $readTime}';
|
return 'SectionRead{id: $id, readTime: $readTime}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5,12 +5,13 @@ class BeaconSection {
|
|||||||
int? orderInConfig;
|
int? orderInConfig;
|
||||||
String? configurationId;
|
String? configurationId;
|
||||||
String? sectionId;
|
String? sectionId;
|
||||||
|
SectionType? sectionType;
|
||||||
/*int? rssi;
|
/*int? rssi;
|
||||||
int? accuracy;
|
int? accuracy;
|
||||||
String? proximityUUID;*/
|
String? proximityUUID;*/
|
||||||
bool? found = false;
|
bool? found = false;
|
||||||
|
|
||||||
BeaconSection({this.minorBeaconId, this.orderInConfig, this.configurationId, this.sectionId, this.found});
|
BeaconSection({this.minorBeaconId, this.orderInConfig, this.configurationId, this.sectionId, this.sectionType, this.found});
|
||||||
|
|
||||||
Map<String, dynamic> toMap() {
|
Map<String, dynamic> toMap() {
|
||||||
return {
|
return {
|
||||||
@ -18,6 +19,7 @@ class BeaconSection {
|
|||||||
'orderInConfig': orderInConfig,
|
'orderInConfig': orderInConfig,
|
||||||
'configurationId': configurationId,
|
'configurationId': configurationId,
|
||||||
'sectionId': sectionId,
|
'sectionId': sectionId,
|
||||||
|
'sectionType': sectionType,
|
||||||
/*'rssi': rssi,
|
/*'rssi': rssi,
|
||||||
'accuracy': accuracy,
|
'accuracy': accuracy,
|
||||||
'proximityUUID': proximityUUID,*/
|
'proximityUUID': proximityUUID,*/
|
||||||
@ -31,6 +33,7 @@ class BeaconSection {
|
|||||||
orderInConfig: json['orderInConfig'] as int,
|
orderInConfig: json['orderInConfig'] as int,
|
||||||
configurationId: json['configurationId'] as String,
|
configurationId: json['configurationId'] as String,
|
||||||
sectionId: json['sectionId'] as String,
|
sectionId: json['sectionId'] as String,
|
||||||
|
sectionType: SectionType.fromJson(json[r'sectionType']),
|
||||||
/*rssi: json['rssi'] as int,
|
/*rssi: json['rssi'] as int,
|
||||||
accuracy: json['accuracy'] as int,
|
accuracy: json['accuracy'] as int,
|
||||||
proximityUUID: json['proximityUUID'] as String,*/
|
proximityUUID: json['proximityUUID'] as String,*/
|
||||||
@ -40,6 +43,6 @@ class BeaconSection {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
return 'BeaconSection{minorBeaconId: $minorBeaconId, orderInConfig: $orderInConfig, sectionId: $sectionId, configurationId: $configurationId, found: $found}';
|
return 'BeaconSection{minorBeaconId: $minorBeaconId, orderInConfig: $orderInConfig, sectionId: $sectionId, sectionType: $sectionType, configurationId: $configurationId, found: $found}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -12,8 +12,8 @@ class VisitAppContext with ChangeNotifier{
|
|||||||
List<String?>? sectionIds; // Use to valid QR code found
|
List<String?>? sectionIds; // Use to valid QR code found
|
||||||
List<BeaconSection?>? beaconSections;
|
List<BeaconSection?>? beaconSections;
|
||||||
List<SectionDTO?>? currentSections;
|
List<SectionDTO?>? currentSections;
|
||||||
List<ArticleRead> readArticles = [];
|
List<SectionRead> readSections = [];
|
||||||
bool isArticleCurrentlyShown = false;
|
bool isContentCurrentlyShown = false;
|
||||||
bool isScanningBeacons = false;
|
bool isScanningBeacons = false;
|
||||||
|
|
||||||
VisitAppContext({this.language, this.id, this.configuration, this.instanceId});
|
VisitAppContext({this.language, this.id, this.configuration, this.instanceId});
|
||||||
|
|||||||
@ -5,10 +5,8 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:manager_api/api.dart';
|
import 'package:manager_api/api.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/CustomAppBar.dart';
|
import 'package:mymuseum_visitapp/Components/CustomAppBar.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/Loading.dart';
|
import 'package:mymuseum_visitapp/Components/Loading.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/ScannerBouton.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Components/SliderImages.dart';
|
import 'package:mymuseum_visitapp/Components/SliderImages.dart';
|
||||||
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Helpers/networkCheck.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/articleRead.dart';
|
import 'package:mymuseum_visitapp/Models/articleRead.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
||||||
@ -41,13 +39,13 @@ class _ArticlePageState extends State<ArticlePage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
widget.visitAppContextIn.isArticleCurrentlyShown = true;
|
widget.visitAppContextIn.isContentCurrentlyShown = true;
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
visitAppContext!.isArticleCurrentlyShown = false;
|
visitAppContext!.isContentCurrentlyShown = false;
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +53,7 @@ class _ArticlePageState extends State<ArticlePage> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final appContext = Provider.of<AppContext>(context);
|
final appContext = Provider.of<AppContext>(context);
|
||||||
Size size = MediaQuery.of(context).size;
|
Size size = MediaQuery.of(context).size;
|
||||||
final notchInset = MediaQuery.of(context).padding;
|
//final notchInset = MediaQuery.of(context).padding;
|
||||||
|
|
||||||
visitAppContext = appContext.getContext();
|
visitAppContext = appContext.getContext();
|
||||||
|
|
||||||
@ -257,9 +255,9 @@ class _ArticlePageState extends State<ArticlePage> {
|
|||||||
if(sectionTest.isNotEmpty) {
|
if(sectionTest.isNotEmpty) {
|
||||||
sectionDTO = DatabaseHelper.instance.getSectionFromDB(sectionTest.first);
|
sectionDTO = DatabaseHelper.instance.getSectionFromDB(sectionTest.first);
|
||||||
try {
|
try {
|
||||||
ArticleRead articleRead = ArticleRead(id: sectionDTO!.id!, readTime: DateTime.now().millisecondsSinceEpoch);
|
SectionRead articleRead = SectionRead(id: sectionDTO!.id!, readTime: DateTime.now().millisecondsSinceEpoch);
|
||||||
await DatabaseHelper.instance.insert(DatabaseTableType.articleRead, articleRead.toMap());
|
await DatabaseHelper.instance.insert(DatabaseTableType.articleRead, articleRead.toMap());
|
||||||
visitAppContext!.readArticles.add(articleRead);
|
visitAppContext!.readSections.add(articleRead);
|
||||||
|
|
||||||
appContext.setContext(visitAppContext!);
|
appContext.setContext(visitAppContext!);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
@ -2,17 +2,11 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:auto_size_text/auto_size_text.dart';
|
import 'package:auto_size_text/auto_size_text.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:manager_api/api.dart';
|
import 'package:manager_api/api.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/LanguageSelection.dart';
|
import 'package:mymuseum_visitapp/Components/LanguageSelection.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/Loading.dart';
|
import 'package:mymuseum_visitapp/Components/Loading.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/SearchBox.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Components/SearchNumberBox.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Helpers/requirement_state_controller.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
|
||||||
import 'package:mymuseum_visitapp/Screens/Visit/visit.dart';
|
import 'package:mymuseum_visitapp/Screens/Visit/visit.dart';
|
||||||
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
||||||
import 'package:mymuseum_visitapp/Services/downloadConfiguration.dart';
|
import 'package:mymuseum_visitapp/Services/downloadConfiguration.dart';
|
||||||
@ -350,7 +344,7 @@ class _ConfigurationsListState extends State<ConfigurationsList> {
|
|||||||
|
|
||||||
var isFinish =
|
var isFinish =
|
||||||
await DownloadConfiguration.download(appContext, configuration);
|
await DownloadConfiguration.download(appContext, configuration);
|
||||||
print("C4EST FINIITO");
|
print("C'EST FINI.");
|
||||||
print(isFinish);
|
print(isFinish);
|
||||||
|
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
|||||||
@ -136,7 +136,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
|
|||||||
if(visitAppContext.beaconSections == null) {
|
if(visitAppContext.beaconSections == null) {
|
||||||
List<SectionDTO>? sections = await ApiService.getAllBeacons(client, visitAppContext.instanceId!);
|
List<SectionDTO>? sections = await ApiService.getAllBeacons(client, visitAppContext.instanceId!);
|
||||||
if(sections != null && sections.isNotEmpty) {
|
if(sections != null && sections.isNotEmpty) {
|
||||||
List<BeaconSection> beaconSections = sections.map((e) => BeaconSection(minorBeaconId: e.beaconId, orderInConfig: e.order, configurationId: e.configurationId, sectionId: e.id)).toList();
|
List<BeaconSection> beaconSections = sections.map((e) => BeaconSection(minorBeaconId: e.beaconId, orderInConfig: e.order, configurationId: e.configurationId, sectionId: e.id, sectionType: e.type)).toList();
|
||||||
visitAppContext.beaconSections = beaconSections;
|
visitAppContext.beaconSections = beaconSections;
|
||||||
print("Got some Beacons for you");
|
print("Got some Beacons for you");
|
||||||
print(beaconSections);
|
print(beaconSections);
|
||||||
|
|||||||
326
lib/Screens/Quizz/quizz_page.dart
Normal file
326
lib/Screens/Quizz/quizz_page.dart
Normal file
@ -0,0 +1,326 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
import 'dart:typed_data';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:manager_api/api.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Components/CustomAppBar.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Components/Loading.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Components/SliderImages.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Models/articleRead.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Screens/Article/audio_player.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
||||||
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
|
import 'package:mymuseum_visitapp/client.dart';
|
||||||
|
import 'package:mymuseum_visitapp/constants.dart';
|
||||||
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
|
class QuizzPage extends StatefulWidget {
|
||||||
|
const QuizzPage({Key? key, required this.visitAppContextIn, required this.sectionId}) : super(key: key);
|
||||||
|
|
||||||
|
final String sectionId;
|
||||||
|
final VisitAppContext visitAppContextIn;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<QuizzPage> createState() => _QuizzPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _QuizzPageState extends State<QuizzPage> {
|
||||||
|
SectionDTO? sectionDTO;
|
||||||
|
QuizzDTO? quizzDTO;
|
||||||
|
List<ResourceModel?> resourcesModel = <ResourceModel?>[];
|
||||||
|
ResourceModel? audioResourceModel;
|
||||||
|
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
||||||
|
late Uint8List audiobytes;
|
||||||
|
VisitAppContext? visitAppContext;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
widget.visitAppContextIn.isContentCurrentlyShown = true;
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
visitAppContext!.isContentCurrentlyShown = false;
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final appContext = Provider.of<AppContext>(context);
|
||||||
|
Size size = MediaQuery.of(context).size;
|
||||||
|
//final notchInset = MediaQuery.of(context).padding;
|
||||||
|
|
||||||
|
visitAppContext = appContext.getContext();
|
||||||
|
|
||||||
|
return Scaffold(
|
||||||
|
key: _scaffoldKey,
|
||||||
|
appBar: CustomAppBar(
|
||||||
|
title: sectionDTO != null ? TranslationHelper.get(sectionDTO!.title, visitAppContext!) : "",
|
||||||
|
isHomeButton: false,
|
||||||
|
),
|
||||||
|
body: FutureBuilder(
|
||||||
|
future: getQuizz(appContext, appContext.clientAPI, widget.sectionId),
|
||||||
|
builder: (context, AsyncSnapshot<dynamic> snapshot) {
|
||||||
|
if(quizzDTO != null && sectionDTO != null) {
|
||||||
|
if(size.height > size.width) {
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Text("TODO show QUESTION THEN COLUMN WITH ALL RESPONSE")
|
||||||
|
],
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Container(
|
||||||
|
height: size.height,
|
||||||
|
width: size.width,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Text("TODO show QUESTION THEN GRID LIKE IN TABLET")
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return const Loading();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
),
|
||||||
|
//floatingActionButton: const ScannerBouton(isReplacement: true),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Widget getImages(Size size, bool isContentTop) {
|
||||||
|
if(size.width > size.height) {
|
||||||
|
return SizedBox(
|
||||||
|
width: size.width *0.5,
|
||||||
|
height: size.height * 0.75,
|
||||||
|
child: Padding(
|
||||||
|
padding: isContentTop ? const EdgeInsets.only(left: 8.0, right: 8.0, bottom: 8.0): const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: kBlue2,
|
||||||
|
width: 0.5,
|
||||||
|
),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: BoxShape.rectangle,
|
||||||
|
borderRadius: BorderRadius.circular(5.0),
|
||||||
|
boxShadow: const [kDefaultShadow],
|
||||||
|
),
|
||||||
|
child: SliderImagesWidget(
|
||||||
|
resources: resourcesModel,
|
||||||
|
height: size.height * 0.29,
|
||||||
|
imagesDTO: quizzDTO!.images!,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return SizedBox(
|
||||||
|
width: size.width,
|
||||||
|
height: size.height * 0.3,
|
||||||
|
child: Padding(
|
||||||
|
padding: isContentTop ? const EdgeInsets.only(left: 8.0, right: 8.0, bottom: 8.0): const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: kBlue2,
|
||||||
|
width: 0.5,
|
||||||
|
),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: BoxShape.rectangle,
|
||||||
|
borderRadius: BorderRadius.circular(5.0),
|
||||||
|
boxShadow: const [kDefaultShadow],
|
||||||
|
),
|
||||||
|
child: SliderImagesWidget(
|
||||||
|
resources: resourcesModel,
|
||||||
|
height: size.height * 0.29,
|
||||||
|
imagesDTO: articleDTO!.images!,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*Widget getContent(Size size, AppContext appContext) {
|
||||||
|
if(size.width > size.height) {
|
||||||
|
return SingleChildScrollView(
|
||||||
|
child: Container(
|
||||||
|
width: size.width *0.5,
|
||||||
|
height: size.height * 0.76,
|
||||||
|
//color: Colors.blueAccent,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0, bottom: 8.0),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: kBlue2,
|
||||||
|
width: 0.5,
|
||||||
|
),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: BoxShape.rectangle,
|
||||||
|
borderRadius: BorderRadius.circular(5.0),
|
||||||
|
boxShadow: const [kDefaultShadow],
|
||||||
|
),
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationHelper.get(articleDTO!.content, appContext.getContext()),
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
style: const TextStyle(fontSize: kArticleContentSize)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Expanded(
|
||||||
|
child: Container(
|
||||||
|
width: size.width,
|
||||||
|
//height: size.height * 0.65,
|
||||||
|
//color: Colors.blueAccent,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(left: 8.0, right: 8.0, top: 8.0, bottom: 8.0),
|
||||||
|
child: Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
border: Border.all(
|
||||||
|
color: kBlue2,
|
||||||
|
width: 0.5,
|
||||||
|
),
|
||||||
|
color: Colors.white,
|
||||||
|
shape: BoxShape.rectangle,
|
||||||
|
borderRadius: BorderRadius.circular(5.0),
|
||||||
|
boxShadow: const [kDefaultShadow],
|
||||||
|
),
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: Text(
|
||||||
|
TranslationHelper.get(articleDTO!.content, appContext.getContext()),
|
||||||
|
textAlign: TextAlign.left,
|
||||||
|
style: const TextStyle(fontSize: kArticleContentSize)
|
||||||
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
Future<QuizzDTO?> getQuizz(AppContext appContext, Client client, String sectionId) async {
|
||||||
|
try {
|
||||||
|
if(sectionDTO == null || quizzDTO == null) {
|
||||||
|
bool isConfigOffline = (appContext.getContext() as VisitAppContext).configuration!.isOffline!;
|
||||||
|
if(isConfigOffline)
|
||||||
|
{
|
||||||
|
// OFFLINE
|
||||||
|
List<Map<String, dynamic>> sectionTest = await DatabaseHelper.instance.queryWithColumnId(DatabaseTableType.sections, sectionId);
|
||||||
|
if(sectionTest.isNotEmpty) {
|
||||||
|
sectionDTO = DatabaseHelper.instance.getSectionFromDB(sectionTest.first);
|
||||||
|
try {
|
||||||
|
SectionRead sectionRead = SectionRead(id: sectionDTO!.id!, readTime: DateTime.now().millisecondsSinceEpoch);
|
||||||
|
await DatabaseHelper.instance.insert(DatabaseTableType.articleRead, sectionRead.toMap());
|
||||||
|
visitAppContext!.readSections.add(sectionRead);
|
||||||
|
|
||||||
|
appContext.setContext(visitAppContext!);
|
||||||
|
} catch (e) {
|
||||||
|
print("DATABASE ERROR SECTIONREAD");
|
||||||
|
print(e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print("EMPTY SECTION");
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
// ONLINE
|
||||||
|
SectionDTO? sectionOnline = await client.sectionApi!.sectionGetDetail(sectionId);
|
||||||
|
if(sectionOnline != null) {
|
||||||
|
sectionDTO = sectionOnline;
|
||||||
|
} else {
|
||||||
|
print("EMPTY SECTION");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sectionDTO!.type == SectionType.Quizz) {
|
||||||
|
quizzDTO = QuizzDTO.fromJson(jsonDecode(sectionDTO!.data!));
|
||||||
|
}
|
||||||
|
if(quizzDTO != null) {
|
||||||
|
if(quizzDTO!.questions != null && quizzDTO!.questions!.isNotEmpty) {
|
||||||
|
quizzDTO!.questions!.sort((a, b) => a.order!.compareTo(b.order!));
|
||||||
|
/*var audioIdArticle = articleDTO!.audioIds!.where((audioId) => audioId.language == (appContext.getContext() as VisitAppContext).language);
|
||||||
|
if(audioIdArticle.isNotEmpty && audioIdArticle.first.value != null) {
|
||||||
|
if(isConfigOffline)
|
||||||
|
{
|
||||||
|
// OFFLINE
|
||||||
|
List<Map<String, dynamic>> ressourceTest = await DatabaseHelper
|
||||||
|
.instance.queryWithColumnId(
|
||||||
|
DatabaseTableType.resources, audioIdArticle.first.value!);
|
||||||
|
if (ressourceTest.isNotEmpty) {
|
||||||
|
audioResourceModel = DatabaseHelper.instance.getResourceFromDB(ressourceTest.first);
|
||||||
|
Uint8List base64String = base64Decode(audioResourceModel!.data!);
|
||||||
|
audiobytes = base64String;
|
||||||
|
} else {
|
||||||
|
print("EMPTY resourcesModel - first");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ONLINE
|
||||||
|
ResourceModel? resourceAudioOnline = await ApiService.downloadAudio(client, audioIdArticle.first.value!);
|
||||||
|
if(resourceAudioOnline != null) {
|
||||||
|
audioResourceModel = resourceAudioOnline;
|
||||||
|
Uint8List base64String = base64Decode(resourceAudioOnline.data!);
|
||||||
|
audiobytes = base64String;
|
||||||
|
} else {
|
||||||
|
print("EMPTY resourcesModel online - audio");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
for (var question in quizzDTO!.questions!) {
|
||||||
|
if(isConfigOffline)
|
||||||
|
{
|
||||||
|
// OFFLINE
|
||||||
|
if(question.resourceId != null) {
|
||||||
|
List<Map<String, dynamic>> ressourceQuizz = await DatabaseHelper.instance.queryWithColumnId(DatabaseTableType.resources, question.resourceId!);
|
||||||
|
if(ressourceQuizz.isNotEmpty) {
|
||||||
|
resourcesModel.add(DatabaseHelper.instance.getResourceFromDB(ressourceQuizz.first));
|
||||||
|
} else {
|
||||||
|
print("EMPTY resourcesModel - second");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// ONLINE
|
||||||
|
if(question.resourceId != null) {
|
||||||
|
resourcesModel.add(ResourceModel(id: question.resourceId, source: question.source_, type: ResourceType.Image));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
//print(sectionDTO!.title);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return null; // TODO return local list..
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
print(e);
|
||||||
|
print("IN CATCH");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,7 +5,7 @@ import 'package:flutter/foundation.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:mymuseum_visitapp/Components/CustomAppBar.dart';
|
import 'package:mymuseum_visitapp/Components/CustomAppBar.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
import 'package:mymuseum_visitapp/Screens/Article/article_page.dart';
|
||||||
import 'package:mymuseum_visitapp/app_context.dart';
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
|||||||
import 'package:mymuseum_visitapp/Models/beaconSection.dart';
|
import 'package:mymuseum_visitapp/Models/beaconSection.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
import 'package:mymuseum_visitapp/Models/resourceModel.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
import 'package:mymuseum_visitapp/Screens/Article/article_page.dart';
|
||||||
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
||||||
import 'package:mymuseum_visitapp/app_context.dart';
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
import 'package:mymuseum_visitapp/client.dart';
|
import 'package:mymuseum_visitapp/client.dart';
|
||||||
|
|||||||
@ -7,7 +7,8 @@ import 'package:mymuseum_visitapp/Helpers/DatabaseHelper.dart';
|
|||||||
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/articleRead.dart';
|
import 'package:mymuseum_visitapp/Models/articleRead.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
import 'package:mymuseum_visitapp/Screens/Article/article_page.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Screens/Quizz/quizz_page.dart';
|
||||||
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
import 'package:mymuseum_visitapp/Services/apiService.dart';
|
||||||
import 'package:mymuseum_visitapp/app_context.dart';
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
import 'package:mymuseum_visitapp/constants.dart';
|
import 'package:mymuseum_visitapp/constants.dart';
|
||||||
@ -100,15 +101,33 @@ class _BodyState extends State<Body> {
|
|||||||
itemIndex: index,
|
itemIndex: index,
|
||||||
sectionDTO: sectionsToDisplay[index],
|
sectionDTO: sectionsToDisplay[index],
|
||||||
press: () {
|
press: () {
|
||||||
Navigator.push(
|
switch(sectionsToDisplay[index].type) {
|
||||||
context,
|
case SectionType.Article:
|
||||||
MaterialPageRoute(
|
Navigator.push(
|
||||||
builder: (context) => ArticlePage(
|
context,
|
||||||
visitAppContextIn: appContext.getContext(),
|
MaterialPageRoute(
|
||||||
articleId: sectionsToDisplay[index].id!,
|
builder: (context) => ArticlePage(
|
||||||
),
|
visitAppContextIn: appContext.getContext(),
|
||||||
),
|
articleId: sectionsToDisplay[index].id!,
|
||||||
);
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case SectionType.Quizz:
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => QuizzPage(
|
||||||
|
visitAppContextIn: appContext.getContext(),
|
||||||
|
sectionId: sectionsToDisplay[index].id!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// TODO HANDLE, SHOW NOT SUPPORTED
|
||||||
|
break;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -147,7 +166,7 @@ class _BodyState extends State<Body> {
|
|||||||
List<SectionDTO>? sectionsDownloaded = await ApiService.getAllSections(appContext.clientAPI, visitAppContext.configuration!.id!);
|
List<SectionDTO>? sectionsDownloaded = await ApiService.getAllSections(appContext.clientAPI, visitAppContext.configuration!.id!);
|
||||||
print(sectionsDownloaded);
|
print(sectionsDownloaded);
|
||||||
if(sectionsDownloaded!.isNotEmpty) {
|
if(sectionsDownloaded!.isNotEmpty) {
|
||||||
sections = sectionsDownloaded.where((s) => s.type == SectionType.Article).toList(); // HERE TODO IF support more than article type
|
sections = sectionsDownloaded.where((s) => s.type == SectionType.Article || s.type == SectionType.Quizz).toList(); // TODO Support more than Article and Quizz section type
|
||||||
print(sections);
|
print(sections);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,7 +59,7 @@ class SectionCard extends StatelessWidget {
|
|||||||
child: Container(
|
child: Container(
|
||||||
margin: const EdgeInsets.only(right: 10),
|
margin: const EdgeInsets.only(right: 10),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: visitAppContext.readArticles.any((element) => element.id == sectionDTO.id) ? kBackgroundGrey : Colors.white,
|
color: visitAppContext.readSections.any((element) => element.id == sectionDTO.id) ? kBackgroundGrey : Colors.white,
|
||||||
border: Border.all(
|
border: Border.all(
|
||||||
color: kBlue2,
|
color: kBlue2,
|
||||||
width: 0.2,
|
width: 0.2,
|
||||||
|
|||||||
@ -12,7 +12,8 @@ import 'package:mymuseum_visitapp/Helpers/requirement_state_controller.dart';
|
|||||||
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
import 'package:mymuseum_visitapp/Helpers/translationHelper.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/beaconSection.dart';
|
import 'package:mymuseum_visitapp/Models/beaconSection.dart';
|
||||||
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
import 'package:mymuseum_visitapp/Models/visitContext.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Article/article.dart';
|
import 'package:mymuseum_visitapp/Screens/Article/article_page.dart';
|
||||||
|
import 'package:mymuseum_visitapp/Screens/Quizz/quizz_page.dart';
|
||||||
import 'package:mymuseum_visitapp/Screens/Visit/beaconArticleFound.dart';
|
import 'package:mymuseum_visitapp/Screens/Visit/beaconArticleFound.dart';
|
||||||
import 'package:mymuseum_visitapp/app_context.dart';
|
import 'package:mymuseum_visitapp/app_context.dart';
|
||||||
import 'package:mymuseum_visitapp/constants.dart';
|
import 'package:mymuseum_visitapp/constants.dart';
|
||||||
@ -179,7 +180,7 @@ class _VisitPageState extends State<VisitPage> with WidgetsBindingObserver {
|
|||||||
|
|
||||||
if(beaconList.isNotEmpty && !modeDebugBeacon) {
|
if(beaconList.isNotEmpty && !modeDebugBeacon) {
|
||||||
// FILTER ALREADY READ
|
// FILTER ALREADY READ
|
||||||
beaconList = beaconList.where((b) => !visitAppContext.readArticles.any((ra) => ra.id == b!.sectionId));
|
beaconList = beaconList.where((b) => !visitAppContext.readSections.any((ra) => ra.id == b!.sectionId));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(beaconList.isNotEmpty)
|
if(beaconList.isNotEmpty)
|
||||||
@ -187,7 +188,7 @@ class _VisitPageState extends State<VisitPage> with WidgetsBindingObserver {
|
|||||||
var milliLastTime = lastTimePopUpWasClosed == null ? 0 : lastTimePopUpWasClosed!.millisecondsSinceEpoch;
|
var milliLastTime = lastTimePopUpWasClosed == null ? 0 : lastTimePopUpWasClosed!.millisecondsSinceEpoch;
|
||||||
var checkIfMoreThanSec = (DateTime.now().millisecondsSinceEpoch - milliLastTime) > timeBetweenBeaconPopUp;
|
var checkIfMoreThanSec = (DateTime.now().millisecondsSinceEpoch - milliLastTime) > timeBetweenBeaconPopUp;
|
||||||
|
|
||||||
if(!_isDialogShowing && !visitAppContext.isArticleCurrentlyShown && checkIfMoreThanSec && visitAppContext.isScanningBeacons) {
|
if(!_isDialogShowing && !visitAppContext.isContentCurrentlyShown && checkIfMoreThanSec && visitAppContext.isScanningBeacons) {
|
||||||
print("Before sorting");
|
print("Before sorting");
|
||||||
print(beaconList);
|
print(beaconList);
|
||||||
beaconList.toList().sort((a, b) => a!.orderInConfig!.compareTo(b!.orderInConfig!));
|
beaconList.toList().sort((a, b) => a!.orderInConfig!.compareTo(b!.orderInConfig!));
|
||||||
@ -280,15 +281,34 @@ class _VisitPageState extends State<VisitPage> with WidgetsBindingObserver {
|
|||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
//visitAppContext.isArticleCurrentlyShown = true;
|
//visitAppContext.isArticleCurrentlyShown = true;
|
||||||
lastTimePopUpWasClosed = DateTime.now();
|
lastTimePopUpWasClosed = DateTime.now();
|
||||||
Navigator.push(
|
|
||||||
context,
|
switch(beaconSection!.sectionType!) {
|
||||||
MaterialPageRoute(
|
case SectionType.Article:
|
||||||
builder: (context) => ArticlePage(
|
Navigator.push(
|
||||||
visitAppContextIn: visitAppContext,
|
context,
|
||||||
articleId: beaconSection!.sectionId!,
|
MaterialPageRoute(
|
||||||
),
|
builder: (context) => ArticlePage(
|
||||||
),
|
visitAppContextIn: visitAppContext,
|
||||||
);
|
articleId: beaconSection.sectionId!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case SectionType.Quizz:
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => QuizzPage(
|
||||||
|
visitAppContextIn: visitAppContext,
|
||||||
|
sectionId: beaconSection.sectionId!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// TODO HANDLE, SHOW NOT SUPPORTED
|
||||||
|
break;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|||||||
@ -42,7 +42,7 @@ class DownloadConfiguration {
|
|||||||
if(sections!.isNotEmpty) {
|
if(sections!.isNotEmpty) {
|
||||||
|
|
||||||
List<SectionDTO> sectionsInDB = await DatabaseHelper.instance.queryWithConfigurationId(DatabaseTableType.sections, configuration.id!);
|
List<SectionDTO> sectionsInDB = await DatabaseHelper.instance.queryWithConfigurationId(DatabaseTableType.sections, configuration.id!);
|
||||||
List<SectionDTO> sectionsToKeep = sections.where((s) => s.type == SectionType.Article).toList(); // TODO handle other type of section
|
List<SectionDTO> sectionsToKeep = sections.where((s) => s.type == SectionType.Article || s.type == SectionType.Quizz).toList(); // TODO handle other type of section (for now, Article and Quizz)
|
||||||
|
|
||||||
sectionsToKeep.sort((a,b) => a.order!.compareTo(b.order!));
|
sectionsToKeep.sort((a,b) => a.order!.compareTo(b.order!));
|
||||||
int newOrder = 0;
|
int newOrder = 0;
|
||||||
@ -119,70 +119,6 @@ class DownloadConfiguration {
|
|||||||
cleanLocalResources(usedImageOrAudioIds, configuration);
|
cleanLocalResources(usedImageOrAudioIds, configuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update local DB - Configuration - OLD COOODE
|
|
||||||
/*await DatabaseHelper.instance.insert(DatabaseTableType.configurations, ModelsHelper.configurationToMap(configuration));
|
|
||||||
List<String> usedImageOrAudioIds = [];
|
|
||||||
|
|
||||||
var currentLanguage = (appContext.getContext() as VisitAppContext).language;
|
|
||||||
|
|
||||||
if(configuration.imageId != null) {
|
|
||||||
ImageDTO image = ImageDTO(resourceId: configuration.imageId, source_: configuration.imageSource);
|
|
||||||
usedImageOrAudioIds.add(configuration.imageId!);
|
|
||||||
await ApiService.downloadAndPushLocalImage(appContext.clientAPI, image);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<SectionDTO>? sections = await ApiService.getAllSections(appContext.clientAPI, configuration.id!);
|
|
||||||
|
|
||||||
if(sections!.isNotEmpty) {
|
|
||||||
|
|
||||||
List<SectionDTO> sectionsInDB = await DatabaseHelper.instance.queryWithConfigurationId(DatabaseTableType.sections, configuration.id!);
|
|
||||||
|
|
||||||
List<SectionDTO> sectionsToKeep = sections.where((s) => s.type == SectionType.Article).toList(); // TODO handle other type of section
|
|
||||||
|
|
||||||
sectionsToKeep.sort((a,b) => a.order!.compareTo(b.order!));
|
|
||||||
int newOrder = 0;
|
|
||||||
// Update local DB - Sections
|
|
||||||
for(var section in sectionsToKeep) {
|
|
||||||
section.order = newOrder;
|
|
||||||
await DatabaseHelper.instance.insert(DatabaseTableType.sections, ModelsHelper.sectionToMap(section));
|
|
||||||
|
|
||||||
// Download section image
|
|
||||||
if(section.imageId != null) {
|
|
||||||
usedImageOrAudioIds.add(section.imageId!);
|
|
||||||
await ApiService.downloadAndPushLocalImage(appContext.clientAPI, ImageDTO(source_: section.imageSource, resourceId: section.imageId));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Download all images..
|
|
||||||
ArticleDTO? articleDTO = ArticleDTO.fromJson(jsonDecode(section.data!));
|
|
||||||
|
|
||||||
if(articleDTO != null) {
|
|
||||||
for(var image in articleDTO.images!) {
|
|
||||||
usedImageOrAudioIds.add(image.resourceId!);
|
|
||||||
await ApiService.downloadAndPushLocalImage(appContext.clientAPI, image);
|
|
||||||
}
|
|
||||||
|
|
||||||
var audioIdArticle = articleDTO.audioIds!.where((audioId) => audioId.language == currentLanguage);
|
|
||||||
if(audioIdArticle.isNotEmpty && audioIdArticle.first.value != null)
|
|
||||||
{
|
|
||||||
usedImageOrAudioIds.add(audioIdArticle.first.value!);
|
|
||||||
await ApiService.downloadAndPushLocalAudio(appContext.clientAPI, audioIdArticle.first.value!);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
newOrder = newOrder + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String?> sectionIdsToRemove = sectionsInDB.map((s) => s.id).where((sectionId) => !sectionsToKeep.map((sk) => sk.id).contains(sectionId)).toList();
|
|
||||||
|
|
||||||
for(var sectionIdToRemove in sectionIdsToRemove) {
|
|
||||||
print("section with id removed");
|
|
||||||
print(sectionIdToRemove);
|
|
||||||
await DatabaseHelper.instance.delete(sectionIdToRemove!, DatabaseTableType.sections);
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanLocalResources(usedImageOrAudioIds, configuration);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,15 +25,15 @@ void main() async {
|
|||||||
print("we've got an local db !");
|
print("we've got an local db !");
|
||||||
print(localContext);
|
print(localContext);
|
||||||
|
|
||||||
List<ArticleRead> articleReadTest = List<ArticleRead>.from(await DatabaseHelper.instance.getData(DatabaseTableType.articleRead));
|
List<SectionRead> articleReadTest = List<SectionRead>.from(await DatabaseHelper.instance.getData(DatabaseTableType.articleRead));
|
||||||
localContext.readArticles = articleReadTest;
|
localContext.readSections = articleReadTest;
|
||||||
} else {
|
} else {
|
||||||
localContext = VisitAppContext(language: "FR", id: "UserId_Init", instanceId: "633ee379d9405f32f166f047");
|
localContext = VisitAppContext(language: "FR", id: "UserId_Init", instanceId: "633ee379d9405f32f166f047");
|
||||||
DatabaseHelper.instance.insert(DatabaseTableType.main, localContext.toMap());
|
DatabaseHelper.instance.insert(DatabaseTableType.main, localContext.toMap());
|
||||||
|
|
||||||
List<ArticleRead> articleReadTest = List<ArticleRead>.from(await DatabaseHelper.instance.getData(DatabaseTableType.articleRead));
|
List<SectionRead> articleReadTest = List<SectionRead>.from(await DatabaseHelper.instance.getData(DatabaseTableType.articleRead));
|
||||||
localContext.readArticles = articleReadTest;
|
localContext.readSections = articleReadTest;
|
||||||
print(localContext.readArticles);
|
print(localContext.readSections);
|
||||||
|
|
||||||
print("NO LOCAL DB !");
|
print("NO LOCAL DB !");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user