diff --git a/lib/features/home/home_provider.dart b/lib/features/home/home_provider.dart index 7011d66..ec7a1b2 100644 --- a/lib/features/home/home_provider.dart +++ b/lib/features/home/home_provider.dart @@ -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> getDevices() async { + state.setLoading(); + await Future.delayed(const Duration(seconds: 2)); + state.setSuccess(); + notifyListeners(); + return []; + } + + Map> 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]; } diff --git a/lib/features/home/home_state.dart b/lib/features/home/home_state.dart index 5683482..0f306ce 100644 --- a/lib/features/home/home_state.dart +++ b/lib/features/home/home_state.dart @@ -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; } } diff --git a/lib/features/home/home_view.dart b/lib/features/home/home_view.dart index dd4ced9..b94a330 100644 --- a/lib/features/home/home_view.dart +++ b/lib/features/home/home_view.dart @@ -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(), ); }, diff --git a/lib/features/home/widgets/default_app_bar.dart b/lib/features/home/widgets/default_app_bar.dart index e2f88bc..1a223f4 100644 --- a/lib/features/home/widgets/default_app_bar.dart +++ b/lib/features/home/widgets/default_app_bar.dart @@ -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( + builder: (context, provider, child) { + return AppBar( + title: const Text('Syncrow'), + actions: [ + IconButton( + icon: const Icon(Icons.mic), + onPressed: () {}, + ), + IconButton( + icon: const Icon(Icons.add_circle), + onPressed: () {}, + ), + ], + ); + }, ); }