mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2026-03-11 06:11:45 +00:00
initialized home state
modified appbar tested loading for home screen
This commit is contained in:
@ -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];
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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(),
|
||||
);
|
||||
},
|
||||
|
||||
@ -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: () {},
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user