aboutsummaryrefslogtreecommitdiff
path: root/lib/views/week_view.dart
diff options
context:
space:
mode:
authordavidpkj <davidpenkow1@gmail.com>2022-07-17 19:25:26 +0200
committerdavidpkj <davidpenkow1@gmail.com>2022-07-17 19:25:26 +0200
commitd282f4bb380ce9c445d6bd3a4c9f001bb6b5f501 (patch)
tree023428b7fa249b66a34d0d83c2f0df0ea572ba75 /lib/views/week_view.dart
Initial Commit
Diffstat (limited to 'lib/views/week_view.dart')
-rw-r--r--lib/views/week_view.dart81
1 files changed, 81 insertions, 0 deletions
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<WeekView> {
+ @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<Response?> _getWeeklyRecipes() async {
+ Map<String, String> _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<Widget> _buildRecipeCardsFromString(String string) {
+ List<Widget> _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<Null> _retry() async {
+ await Future.delayed(Duration(milliseconds: 300));
+
+ setState(() {});
+
+ return null;
+ }
+}