Added loading screen on init

This commit is contained in:
2023-09-29 10:17:10 +05:30
parent cfb105068a
commit 47259b7a58
4 changed files with 13 additions and 5 deletions

View File

@@ -20,3 +20,5 @@ const String hashLink =
const String dataLink =
"https://raw.githubusercontent.com/kphanipavan/IIITB_Menu/menu_scraper/out.json";
enum DataStatus { Loaded, Loading, NotFound }

View File

@@ -16,14 +16,14 @@ class GlobalModel extends ChangeNotifier {
late Map<dynamic, dynamic> mainData;
DateTime currentDate = DateTime.now();
String menuTime = breakfast;
bool menuAvailable = false;
DataStatus menuAvailable = DataStatus.Loading;
GlobalModel() {
print("In constructor");
GlobalModel.loadData().then((value) {
mainData = value;
if (this.mainData["dates"].keys.contains(this.date)) {
this.menuAvailable = true;
this.menuAvailable = DataStatus.Loaded;
}
// print(mainData);
notifyListeners();
@@ -157,9 +157,9 @@ class GlobalModel extends ChangeNotifier {
void isMenuAvailable() {
if (this.mainData["dates"].keys.contains(this.date)) {
this.menuAvailable = true;
this.menuAvailable = DataStatus.Loaded;
} else {
this.menuAvailable = false;
this.menuAvailable = DataStatus.NotFound;
}
}

View File

@@ -96,7 +96,7 @@ class HomePage extends StatelessWidget {
),
body: TabBarView(
controller: cont,
children: data.menuAvailable
children: data.menuAvailable != DataStatus.NotFound
? const [
MenuListView(menuType: "bf"),
MenuListView(menuType: "ln"),

View File

@@ -1,6 +1,7 @@
// ignore_for_file: unnecessary_this, file_names
import 'package:flutter/material.dart';
import 'package:iiitb_menu/constants.dart';
import 'package:iiitb_menu/models/globalModel.dart';
import 'package:iiitb_menu/widgets/itemCard.dart';
import 'package:provider/provider.dart';
@@ -15,6 +16,11 @@ class MenuListView extends StatelessWidget {
builder: (BuildContext context, GlobalModel data, Widget? child) {
// print(data.date);
// print(data.mainData["dates"][data.date]);
DataStatus dataStatus = data.menuAvailable;
if (dataStatus == DataStatus.Loading) {
return const Center(
child: Text("Loading...", style: TextStyle(fontSize: 40)));
}
String menuIndex = data.mainData["dates"][data.date];
return Column(
children: [