From d282f4bb380ce9c445d6bd3a4c9f001bb6b5f501 Mon Sep 17 00:00:00 2001 From: davidpkj Date: Sun, 17 Jul 2022 19:25:26 +0200 Subject: Initial Commit --- lib/views/week_view.dart | 81 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 lib/views/week_view.dart (limited to 'lib/views/week_view.dart') diff --git a/lib/views/week_view.dart b/lib/views/week_view.dart new file mode 100644 index 0000000..8ea43a4 --- /dev/null +++ b/lib/views/week_view.dart @@ -0,0 +1,81 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:kulinar_app/models/recipe_class.dart'; +import 'package:kulinar_app/widgets/error_widgets.dart'; +import 'package:kulinar_app/widgets/recipe_card_widget.dart'; +import 'package:kulinar_app/widgets/custom_drawer_widget.dart'; +import 'package:kulinar_app/models/data/recipe_data_class.dart'; +import 'package:kulinar_app/models/data/settings_data_class.dart'; + +import 'package:http/http.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class WeekView extends StatefulWidget { + const WeekView({Key? key}) : super(key: key); + + @override + _WeekViewState createState() => _WeekViewState(); +} + +class _WeekViewState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: Text(AppLocalizations.of(context)!.category5)), + drawer: CustomDrawer(initalIndex: 2), + body: FutureBuilder( + future: _getWeeklyRecipes(), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState != ConnectionState.done) return LinearProgressIndicator(); + if (snapshot.hasError || !snapshot.hasData) return NetworkContentError(refreshCallback: _retry); + + return RefreshIndicator( + onRefresh: () async { + setState(() {}); + }, + child: ListView( + children: _buildRecipeCardsFromString(snapshot.data.body), + ), + ); + }, + ), + ); + } + + Future _getWeeklyRecipes() async { + Map _headers = {"Content-Type": "application/json; charset=UTF-8"}; + + try { + return await Future.delayed(Duration(milliseconds: 500), () { + print(SettingsData.settings["serverURL"]); + return get(Uri.https(SettingsData.settings["serverURL"]!, "/weekly"), headers: _headers); + }); + } catch (e) { + print(e); + return null; + } + } + + List _buildRecipeCardsFromString(String string) { + List _list = []; + RecipeData.remoteRecipeList.clear(); + + for (dynamic _entry in jsonDecode(string)) { + Recipe _recipe = Recipe.fromJson(jsonEncode(_entry)); + RecipeData.remoteRecipeList.add(_recipe); + _list.add(RecipeCard(remote: true, recipe: _recipe)); + } + + return _list; + } + + Future _retry() async { + await Future.delayed(Duration(milliseconds: 300)); + + setState(() {}); + + return null; + } +} -- cgit v1.2.3