diff --git a/lib/constants.dart b/lib/constants.dart index e92f488..a9a135f 100644 --- a/lib/constants.dart +++ b/lib/constants.dart @@ -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 } diff --git a/lib/models/globalModel.dart b/lib/models/globalModel.dart index 4f662e5..251ddec 100644 --- a/lib/models/globalModel.dart +++ b/lib/models/globalModel.dart @@ -16,14 +16,14 @@ class GlobalModel extends ChangeNotifier { late Map 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; } } diff --git a/lib/views/homePage.dart b/lib/views/homePage.dart index f14cf55..0690806 100644 --- a/lib/views/homePage.dart +++ b/lib/views/homePage.dart @@ -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"), diff --git a/lib/views/menuListView.dart b/lib/views/menuListView.dart index 62a88a9..c02506b 100644 --- a/lib/views/menuListView.dart +++ b/lib/views/menuListView.dart @@ -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: [