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

View File

@ -7,10 +7,39 @@ import 'home_state.dart';
import 'widgets/home_view_body.dart';
class HomeProvider extends ChangeNotifier {
final state = HomeState();
HomeProvider() {
print('HomeProvider created');
getDevices();
}
HomeState state = HomeState();
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 = [
const BottomNavigationBarItem(
icon: Icon(Icons.home_outlined),
@ -38,6 +67,8 @@ class HomeProvider extends ChangeNotifier {
];
Widget currentPage() {
notifyListeners();
return pages[pageIndex];
}

View File

@ -1,5 +1,28 @@
class 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;
}
}

View File

@ -16,7 +16,9 @@ class HomePage extends StatelessWidget {
builder: (context, provider, child) {
return Scaffold(
appBar: const DefaultAppBar(),
body: provider.currentPage(),
body: provider.state.loading
? const Center(child: CircularProgressIndicator())
: provider.currentPage(),
bottomNavigationBar: const DefaultNavBar(),
);
},

View File

@ -1,12 +1,29 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../home_provider.dart';
class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget {
const DefaultAppBar({super.key});
@override
Widget build(BuildContext context) {
return AppBar(
title: const Text('Syncrow'),
return Consumer<HomeProvider>(
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: () {},
),
],
);
},
);
}