initialized home state

modified appbar
tested loading for home screen
This commit is contained in:
Mohammad Salameh
2024-02-14 17:02:12 +03:00
parent 4d8a2655e1
commit 3385ed1297
4 changed files with 78 additions and 5 deletions
+32 -1
View File
@@ -7,10 +7,39 @@ import 'home_state.dart';
import 'widgets/home_view_body.dart'; import 'widgets/home_view_body.dart';
class HomeProvider extends ChangeNotifier { class HomeProvider extends ChangeNotifier {
final state = HomeState(); HomeProvider() {
print('HomeProvider created');
getDevices();
}
HomeState state = HomeState();
static int pageIndex = 0; static int pageIndex = 0;
Future<List<String>> getDevices() async {
state.setLoading();
await Future.delayed(const Duration(seconds: 2));
state.setSuccess();
notifyListeners();
return <String>[];
}
Map<String, List<Widget>> appBarActions = {
'Home': [
IconButton(
icon: const Icon(Icons.mic),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.add_circle),
onPressed: () {},
),
],
'Scene': [],
'Smart': [],
'Profile': [],
};
var bottomNavItems = [ var bottomNavItems = [
const BottomNavigationBarItem( const BottomNavigationBarItem(
icon: Icon(Icons.home_outlined), icon: Icon(Icons.home_outlined),
@@ -38,6 +67,8 @@ class HomeProvider extends ChangeNotifier {
]; ];
Widget currentPage() { Widget currentPage() {
notifyListeners();
return pages[pageIndex]; return pages[pageIndex];
} }
+24 -1
View File
@@ -1,5 +1,28 @@
class HomeState { class HomeState {
HomeState() { HomeState() {
// init some variables loading = false;
}
late bool loading;
late bool success;
late bool error;
void setLoading() {
loading = true;
success = false;
error = false;
}
void setSuccess() {
loading = false;
success = true;
error = false;
}
void setError() {
loading = false;
success = false;
error = true;
} }
} }
+3 -1
View File
@@ -16,7 +16,9 @@ class HomePage extends StatelessWidget {
builder: (context, provider, child) { builder: (context, provider, child) {
return Scaffold( return Scaffold(
appBar: const DefaultAppBar(), appBar: const DefaultAppBar(),
body: provider.currentPage(), body: provider.state.loading
? const Center(child: CircularProgressIndicator())
: provider.currentPage(),
bottomNavigationBar: const DefaultNavBar(), bottomNavigationBar: const DefaultNavBar(),
); );
}, },
+19 -2
View File
@@ -1,12 +1,29 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../home_provider.dart';
class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget { class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget {
const DefaultAppBar({super.key}); const DefaultAppBar({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return AppBar( return Consumer<HomeProvider>(
title: const Text('Syncrow'), builder: (context, provider, child) {
return AppBar(
title: const Text('Syncrow'),
actions: <Widget>[
IconButton(
icon: const Icon(Icons.mic),
onPressed: () {},
),
IconButton(
icon: const Icon(Icons.add_circle),
onPressed: () {},
),
],
);
},
); );
} }