import 'dart:convert'; 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/ScannerBouton.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/Models/resourceModel.dart'; import 'package:mymuseum_visitapp/Screens/Scanner/scanner_old.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 ArticlePage extends StatefulWidget { const ArticlePage({Key? key, required this.articleId}) : super(key: key); final String articleId; @override State createState() => _ArticlePageState(); } class _ArticlePageState extends State { SectionDTO? sectionDTO; ArticleDTO? articleDTO; ResourceModel? resourceModel; @override Widget build(BuildContext context) { final appContext = Provider.of(context); return Scaffold( appBar: CustomAppBar( title: "ArticlePage", isHomeButton: false, ), body: FutureBuilder( future: getArticle(appContext.clientAPI, widget.articleId), builder: (context, AsyncSnapshot snapshot) { if(articleDTO != null && sectionDTO != null) { return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(TranslationHelper.get(sectionDTO!.title, appContext)), Text( TranslationHelper.get(articleDTO!.content, appContext), style: Theme.of(context).textTheme.headline4, textAlign: TextAlign.center, ), resourceModel != null ? Image.memory(base64Decode(resourceModel!.data!)) : const Text("image"), ], ), ); } else { return const Loading(); } } ), floatingActionButton: const ScannerBouton(isReplacement: true), ); } Future getArticle(Client client, String articleId) async { try { bool isOnline = await hasNetwork(); if(true) { await DatabaseHelper.instance.queryWithId(DatabaseTableType.sections, articleId).then((value) async { sectionDTO = DatabaseHelper.instance.getSectionFromDB(value.first); if(sectionDTO!.type == SectionType.Article) { articleDTO = ArticleDTO.fromJson(jsonDecode(sectionDTO!.data!)); if(articleDTO!.images!.isNotEmpty) { await DatabaseHelper.instance.queryWithId(DatabaseTableType.resources, articleDTO!.images!.first.resourceId!).then((value) { resourceModel = DatabaseHelper.instance.getResourceFromDB(value.first); }); } } }); } else { // TODO ONLINE return null; // TODO return local list.. } } catch (e) { print(e); print("IN CATCH"); return null; } } }