Added loading screen on init
This commit is contained in:
@@ -20,3 +20,5 @@ const String hashLink =
|
|||||||
|
|
||||||
const String dataLink =
|
const String dataLink =
|
||||||
"https://raw.githubusercontent.com/kphanipavan/IIITB_Menu/menu_scraper/out.json";
|
"https://raw.githubusercontent.com/kphanipavan/IIITB_Menu/menu_scraper/out.json";
|
||||||
|
|
||||||
|
enum DataStatus { Loaded, Loading, NotFound }
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ class GlobalModel extends ChangeNotifier {
|
|||||||
late Map<dynamic, dynamic> mainData;
|
late Map<dynamic, dynamic> mainData;
|
||||||
DateTime currentDate = DateTime.now();
|
DateTime currentDate = DateTime.now();
|
||||||
String menuTime = breakfast;
|
String menuTime = breakfast;
|
||||||
bool menuAvailable = false;
|
DataStatus menuAvailable = DataStatus.Loading;
|
||||||
|
|
||||||
GlobalModel() {
|
GlobalModel() {
|
||||||
print("In constructor");
|
print("In constructor");
|
||||||
GlobalModel.loadData().then((value) {
|
GlobalModel.loadData().then((value) {
|
||||||
mainData = value;
|
mainData = value;
|
||||||
if (this.mainData["dates"].keys.contains(this.date)) {
|
if (this.mainData["dates"].keys.contains(this.date)) {
|
||||||
this.menuAvailable = true;
|
this.menuAvailable = DataStatus.Loaded;
|
||||||
}
|
}
|
||||||
// print(mainData);
|
// print(mainData);
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
@@ -157,9 +157,9 @@ class GlobalModel extends ChangeNotifier {
|
|||||||
|
|
||||||
void isMenuAvailable() {
|
void isMenuAvailable() {
|
||||||
if (this.mainData["dates"].keys.contains(this.date)) {
|
if (this.mainData["dates"].keys.contains(this.date)) {
|
||||||
this.menuAvailable = true;
|
this.menuAvailable = DataStatus.Loaded;
|
||||||
} else {
|
} else {
|
||||||
this.menuAvailable = false;
|
this.menuAvailable = DataStatus.NotFound;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ class HomePage extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
body: TabBarView(
|
body: TabBarView(
|
||||||
controller: cont,
|
controller: cont,
|
||||||
children: data.menuAvailable
|
children: data.menuAvailable != DataStatus.NotFound
|
||||||
? const [
|
? const [
|
||||||
MenuListView(menuType: "bf"),
|
MenuListView(menuType: "bf"),
|
||||||
MenuListView(menuType: "ln"),
|
MenuListView(menuType: "ln"),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// ignore_for_file: unnecessary_this, file_names
|
// ignore_for_file: unnecessary_this, file_names
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:iiitb_menu/constants.dart';
|
||||||
import 'package:iiitb_menu/models/globalModel.dart';
|
import 'package:iiitb_menu/models/globalModel.dart';
|
||||||
import 'package:iiitb_menu/widgets/itemCard.dart';
|
import 'package:iiitb_menu/widgets/itemCard.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@@ -15,6 +16,11 @@ class MenuListView extends StatelessWidget {
|
|||||||
builder: (BuildContext context, GlobalModel data, Widget? child) {
|
builder: (BuildContext context, GlobalModel data, Widget? child) {
|
||||||
// print(data.date);
|
// print(data.date);
|
||||||
// print(data.mainData["dates"][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];
|
String menuIndex = data.mainData["dates"][data.date];
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
Reference in New Issue
Block a user