mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2026-10-23 09:47:54 +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';
|
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];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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: () {},
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user