From 79e0773820db5a67ad3ced52fd964c78fc6138ab Mon Sep 17 00:00:00 2001 From: poka <poka@p2p.legal> Date: Fri, 27 May 2022 16:58:03 +0200 Subject: [PATCH] Add optionnal bottomAppBar --- assets/wallet.png | Bin 0 -> 2041 bytes lib/providers/home.dart | 168 +++++++++++++++++++++- lib/screens/home.dart | 1 + lib/screens/myWallets/chest_options.dart | 4 + lib/screens/myWallets/wallet_options.dart | 4 + lib/screens/myWallets/wallets_home.dart | 7 +- lib/screens/search.dart | 1 + lib/screens/wallet_view.dart | 10 +- 8 files changed, 188 insertions(+), 7 deletions(-) create mode 100755 assets/wallet.png diff --git a/assets/wallet.png b/assets/wallet.png new file mode 100755 index 0000000000000000000000000000000000000000..c700ad7ee6f796979098f4c519aca05aa9f3a0c2 GIT binary patch literal 2041 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 Xv)Sa(i0<7U00000NkvXXu0mjfd8FAY literal 0 HcmV?d00001 diff --git a/lib/providers/home.dart b/lib/providers/home.dart index 56bf97d8..79770882 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -7,10 +7,16 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:async'; import 'package:gecko/globals.dart'; +import 'package:gecko/models/wallet_data.dart'; +import 'package:gecko/providers/my_wallets.dart'; +import 'package:gecko/providers/wallets_profiles.dart'; +import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; +import 'package:gecko/screens/search.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:flutter/foundation.dart' show kIsWeb; import 'package:path_provider/path_provider.dart' as pp; import 'package:package_info_plus/package_info_plus.dart'; +import 'package:provider/provider.dart'; class HomeProvider with ChangeNotifier { bool? isSearching; @@ -20,9 +26,6 @@ class HomeProvider with ChangeNotifier { Widget appBarExplorer = Text('Explorateur', style: TextStyle(color: Colors.grey[850])); - bool isFirstBuild = true; - // AudioCache player = AudioCache(prefix: 'sounds/'); - Future<void> initHive() async { late Directory hivePath; @@ -132,6 +135,165 @@ class HomeProvider with ChangeNotifier { // volume: volume, mode: PlayerMode.LOW_LATENCY, stayAwake: false); // } + Widget bottomAppBar(BuildContext context, int index) { + MyWalletsProvider _myWalletProvider = + Provider.of<MyWalletsProvider>(context, listen: false); + WalletsProfilesProvider _historyProvider = + Provider.of<WalletsProfilesProvider>(context, listen: false); + + const bool _showBottomBar = true; + + return Visibility( + visible: _showBottomBar, + child: Container( + color: yellowC, + width: double.infinity, + height: 80, + child: Expanded( + child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + const Spacer(flex: 1), + IconButton( + iconSize: 50, + icon: const Image(image: AssetImage('assets/loupe-noire.png')), + onPressed: () { + Navigator.popUntil( + context, + ModalRoute.withName('/'), + ); + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const SearchScreen(); + }), + ); + }, + ), + // SizedBox(width: 0), + const Spacer(flex: 2), + IconButton( + iconSize: 60, + icon: const Image( + image: AssetImage('assets/qrcode-scan.png'), height: 50), + onPressed: () async { + Navigator.popUntil( + context, + ModalRoute.withName('/'), + ); + await _historyProvider.scan(context); + }, + ), + const Spacer(flex: 2), + IconButton( + iconSize: 60, + icon: const Image(image: AssetImage('assets/wallet.png')), + onPressed: () { + WalletData? defaultWallet = + _myWalletProvider.getDefaultWallet(); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) { + return UnlockingWallet( + wallet: defaultWallet, + action: "mywallets", + ); + }, + ), + ); + }, + ), + const Spacer(flex: 1), + ], + ), + ), + ), + ); + } + + // BottomAppBar bottomAppBar(BuildContext context, int index) { + // MyWalletsProvider _myWalletProvider = + // Provider.of<MyWalletsProvider>(context, listen: false); + + // return BottomAppBar( + // color: yellowC, + // notchMargin: 0, //not + // child: SizedBox( + // height: 70, + // child: Row( + // children: [ + // const Spacer(flex: 1), + // IconButton( + // iconSize: 50, + // icon: const Image(image: AssetImage('assets/loupe-noire.png')), + // onPressed: () { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + // Navigator.push( + // context, + // MaterialPageRoute(builder: (context) { + // return const SearchScreen(); + // }), + // ); + // }, + // ), + // const Spacer(flex: 4), + // IconButton( + // iconSize: 60, + // icon: const Image(image: AssetImage('assets/wallet.png')), + // onPressed: () { + // WalletData? defaultWallet = + // _myWalletProvider.getDefaultWallet(); + // Navigator.push( + // context, + // MaterialPageRoute( + // builder: (context) { + // return UnlockingWallet( + // wallet: defaultWallet, + // action: "mywallets", + // ); + // }, + // ), + // ); + // }, + // ), + // const Spacer(flex: 1), + // ], + // )), + // ); + // } + + // Widget floatingAction(BuildContext context, index) { + // WalletsProfilesProvider _historyProvider = + // Provider.of<WalletsProfilesProvider>(context, listen: false); + // return SizedBox( + // height: 90, + // width: 90, + // child: FittedBox( + // child: FloatingActionButton( + // // shape: const RoundedRectangleBorder( + // // borderRadius: BorderRadius.all(Radius.elliptical(150, 100)), + // // ), + // backgroundColor: yellowC, + // elevation: 0, + // onPressed: () async { + // Navigator.popUntil( + // context, + // ModalRoute.withName('/'), + // ); + // await _historyProvider.scan(context); + // }, + // child: const Image( + // image: AssetImage('assets/qrcode-scan.png'), + // height: 35), //icon inside button + // ), + // ), + // ); + // } + void handleSearchEnd() { searchIcon = Icon( Icons.search, diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 6429d7dd..1aa3ed2a 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -94,6 +94,7 @@ class HomeScreen extends StatelessWidget { ], ), ), + // bottomNavigationBar: _homeProvider.bottomBar(context, 1), backgroundColor: const Color(0xffF9F9F1), body: Builder( builder: (ctx) => StatefulWrapper( diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart index 47bb5e12..4d462ed7 100644 --- a/lib/screens/myWallets/chest_options.dart +++ b/lib/screens/myWallets/chest_options.dart @@ -3,6 +3,7 @@ import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; import 'package:flutter/services.dart'; import 'package:gecko/providers/chest_provider.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/screens/myWallets/change_pin.dart'; import 'package:provider/provider.dart'; @@ -17,6 +18,8 @@ class ChestOptions extends StatelessWidget { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); ChestProvider _chestProvider = Provider.of<ChestProvider>(context, listen: false); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); ChestData currentChest = chestBox.get(configBox.get('currentChest'))!; @@ -37,6 +40,7 @@ class ChestOptions extends StatelessWidget { height: 22, child: Text(currentChest.name!), )), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 2), body: Builder( builder: (ctx) => SafeArea( child: Column(children: <Widget>[ diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 3614935b..85ac5d1a 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/providers/substrate_sdk.dart'; @@ -26,6 +27,8 @@ class WalletOptions extends StatelessWidget { Provider.of<WalletsProfilesProvider>(context, listen: false); MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); log.d(_walletOptions.address.text); @@ -62,6 +65,7 @@ class WalletOptions extends StatelessWidget { }), ), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 2), body: Builder( builder: (ctx) => SafeArea( child: Column(children: <Widget>[ diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 98895b34..2b7b9966 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -1,6 +1,7 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/queries.dart'; import 'package:gecko/models/wallet_data.dart'; @@ -21,6 +22,8 @@ class WalletsHome extends StatelessWidget { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); MyWalletsProvider myWalletProvider = Provider.of<MyWalletsProvider>(context); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); final int? _currentChestNumber = myWalletProvider.getCurrentChest(); final ChestData _currentChest = chestBox.get(_currentChestNumber)!; @@ -53,6 +56,7 @@ class WalletsHome extends StatelessWidget { style: TextStyle(color: Colors.grey[850])), backgroundColor: const Color(0xffFFD58D), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 2), body: SafeArea( child: myWalletsTiles(context, _currentChestNumber!), ), @@ -154,8 +158,7 @@ class WalletsHome extends StatelessWidget { } List _listWallets = _myWalletProvider.listWallets; - WalletData? defaultWallet = - _myWalletProvider.getDefaultWallet(); + WalletData? defaultWallet = _myWalletProvider.getDefaultWallet(); final double screenWidth = MediaQuery.of(context).size.width; int nTule = 2; diff --git a/lib/screens/search.dart b/lib/screens/search.dart index d98b98a6..026a4df8 100644 --- a/lib/screens/search.dart +++ b/lib/screens/search.dart @@ -16,6 +16,7 @@ class SearchScreen extends StatelessWidget { SearchProvider _searchProvider = Provider.of<SearchProvider>(context); final double screenHeight = MediaQuery.of(context).size.height; + return WillPopScope( onWillPop: () { _searchProvider.searchController.text = ''; diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index 63b2d34e..4ff71900 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -2,6 +2,7 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:flutter/material.dart'; import 'package:gecko/providers/cesium_plus.dart'; +import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/my_wallets.dart'; @@ -30,6 +31,8 @@ class WalletViewScreen extends StatelessWidget { Provider.of<CesiumPlusProvider>(context, listen: false); _walletViewProvider.pubkey = pubkey!; SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false); + HomeProvider _homeProvider = + Provider.of<HomeProvider>(context, listen: false); MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context, listen: false); @@ -46,11 +49,14 @@ class WalletViewScreen extends StatelessWidget { child: Text('Voir un portefeuille'), ), ), + bottomNavigationBar: _homeProvider.bottomAppBar(context, 1), + // floatingActionButton: _homeProvider.floatingAction(context, 1), + // floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked, body: SafeArea( child: Column(children: <Widget>[ headerProfileView( context, _walletViewProvider, _cesiumPlusProvider), - SizedBox(height: isTall ? 120 : 70), + SizedBox(height: isTall ? 50 : 20), Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Column(children: <Widget>[ SizedBox( @@ -233,7 +239,7 @@ class WalletViewScreen extends StatelessWidget { style: TextStyle( fontSize: buttonFontSize, fontWeight: FontWeight.w500), ), - SizedBox(height: isTall ? 120 : 70) + SizedBox(height: isTall ? 50 : 20) ]), )); } -- GitLab