From 2ecf10eb03a23db43d211ea9eab5603cfef5eee2 Mon Sep 17 00:00:00 2001 From: poka <poka@p2p.legal> Date: Tue, 23 Nov 2021 04:11:45 +0100 Subject: [PATCH] Implement search view --- assets/loupe-noire.png | Bin 0 -> 27270 bytes lib/main.dart | 2 + lib/models/history.dart | 5 - lib/models/my_wallets.dart | 1 - lib/models/queries.dart | 24 ++++ lib/models/search.dart | 12 ++ lib/screens/home.dart | 23 ++-- .../myWallets/confirm_wallet_storage.dart | 3 - lib/screens/search.dart | 109 ++++++++++++++++++ lib/screens/search_result.dart | 45 ++++++++ lib/screens/settings.dart | 3 - 11 files changed, 204 insertions(+), 23 deletions(-) create mode 100644 assets/loupe-noire.png create mode 100644 lib/models/search.dart create mode 100644 lib/screens/search.dart create mode 100644 lib/screens/search_result.dart diff --git a/assets/loupe-noire.png b/assets/loupe-noire.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8773daed29701653cfd986c341ee483c24953e GIT binary patch literal 27270 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 literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index 9ad437f6..a04f5aad 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -27,6 +27,7 @@ import 'package:gecko/models/generate_wallets.dart'; import 'package:gecko/models/history.dart'; import 'package:gecko/models/home.dart'; import 'package:gecko/models/my_wallets.dart'; +import 'package:gecko/models/search.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_options.dart'; import 'package:gecko/screens/home.dart'; @@ -141,6 +142,7 @@ class Gecko extends StatelessWidget { ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()), ChangeNotifierProvider(create: (_) => WalletOptionsProvider()), ChangeNotifierProvider(create: (_) => ChangePinProvider()), + ChangeNotifierProvider(create: (_) => SearchProvider()), ChangeNotifierProvider(create: (_) => CesiumPlusProvider()) ], child: GraphQLProvider( diff --git a/lib/models/history.dart b/lib/models/history.dart index 9639cb46..0d6294d8 100644 --- a/lib/models/history.dart +++ b/lib/models/history.dart @@ -2,14 +2,12 @@ import 'package:dubp/dubp.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; -import 'package:gecko/models/home.dart'; import 'package:gecko/models/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/screens/history.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:jdenticon_dart/jdenticon_dart.dart'; import 'package:permission_handler/permission_handler.dart'; -import 'package:provider/provider.dart'; import 'package:qrscan/qrscan.dart' as scanner; import 'dart:math'; import 'package:intl/intl.dart'; @@ -74,8 +72,6 @@ class HistoryProvider with ChangeNotifier { } String isPubkey(context, pubkey, {bool goHistory}) { - HomeProvider _homeProvider = - Provider.of<HomeProvider>(context, listen: false); final RegExp regExp = RegExp( r'^[a-zA-Z0-9]+$', caseSensitive: false, @@ -102,7 +98,6 @@ class HistoryProvider with ChangeNotifier { historySwitchButtun = "Voir l'historique"; } - _homeProvider.handleSearchEnd(); Navigator.push( context, MaterialPageRoute(builder: (context) { diff --git a/lib/models/my_wallets.dart b/lib/models/my_wallets.dart index cf953499..e8a6305a 100644 --- a/lib/models/my_wallets.dart +++ b/lib/models/my_wallets.dart @@ -3,7 +3,6 @@ import 'package:flutter/material.dart'; import 'dart:async'; import 'package:gecko/globals.dart'; import 'package:gecko/models/wallet_data.dart'; -import 'package:gecko/screens/home.dart'; class MyWalletsProvider with ChangeNotifier { List<WalletData> listWallets = []; diff --git a/lib/models/queries.dart b/lib/models/queries.dart index 72ba0e9e..4644a770 100644 --- a/lib/models/queries.dart +++ b/lib/models/queries.dart @@ -62,3 +62,27 @@ const String getBalance = r''' } } '''; + +const String getWallets = r''' +query ($number: Int!, $cursor: String) { + wallets(pagination: {ord: ASC, pageSize: $number, cursor: $cursor}) { + pageInfo { + hasNextPage + endCursor + } + edges { + node { + script + balance { + amount + base + } + idty { + isMember + username + } + } + } + } +} +'''; diff --git a/lib/models/search.dart b/lib/models/search.dart new file mode 100644 index 00000000..eaa1beb7 --- /dev/null +++ b/lib/models/search.dart @@ -0,0 +1,12 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +class SearchProvider with ChangeNotifier { + TextEditingController searchController = TextEditingController(); + + void rebuildWidget() { + notifyListeners(); + } + + void searchPubkey() {} +} diff --git a/lib/screens/home.dart b/lib/screens/home.dart index f5050353..eff093ff 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -10,6 +10,7 @@ import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/screens/myWallets/restore_chest.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/onBoarding/1.dart'; +import 'package:gecko/screens/search.dart'; import 'dart:ui'; import 'package:gecko/screens/settings.dart'; import 'package:flutter/services.dart'; @@ -205,18 +206,18 @@ Widget geckHome(context) { color: orangeC, // button color child: InkWell( child: const Padding( - padding: EdgeInsets.all(18), - child: Image( - image: AssetImage('assets/home/loupe.png'), - height: 70)), + padding: EdgeInsets.all(18), + child: Image( + image: AssetImage('assets/home/loupe.png'), + height: 70), + ), onTap: () { - // Navigator.push( - // context, - // MaterialPageRoute( - // builder: (context) { - // return TemplateScreen(); - // }), - // ); + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const SearchScreen(); + }), + ); }), ), ), diff --git a/lib/screens/myWallets/confirm_wallet_storage.dart b/lib/screens/myWallets/confirm_wallet_storage.dart index ef743245..fe7dc15d 100644 --- a/lib/screens/myWallets/confirm_wallet_storage.dart +++ b/lib/screens/myWallets/confirm_wallet_storage.dart @@ -6,7 +6,6 @@ import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/generate_wallets.dart'; import 'package:gecko/models/my_wallets.dart'; -import 'package:gecko/models/wallet_options.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:provider/provider.dart'; @@ -33,8 +32,6 @@ class ConfirmStoreWallet extends StatelessWidget with ChangeNotifier { Provider.of<GenerateWalletsProvider>(context); MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context); - WalletOptionsProvider _walletOptions = - Provider.of<WalletOptionsProvider>(context); final int _currentChest = _myWalletProvider.getCurrentChest(); _mnemonicController.text = generatedMnemonic; diff --git a/lib/screens/search.dart b/lib/screens/search.dart new file mode 100644 index 00000000..39e43374 --- /dev/null +++ b/lib/screens/search.dart @@ -0,0 +1,109 @@ +import 'package:flutter/services.dart'; +import 'package:gecko/globals.dart'; +import 'package:flutter/material.dart'; +import 'package:gecko/models/search.dart'; +import 'package:gecko/screens/search_result.dart'; +import 'package:provider/provider.dart'; +// import 'package:gecko/models/home.dart'; +// import 'package:provider/provider.dart'; + +class SearchScreen extends StatelessWidget { + const SearchScreen({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + SearchProvider _searchProvider = Provider.of<SearchProvider>(context); + + return WillPopScope( + onWillPop: () { + _searchProvider.searchController.text = ''; + return Future<bool>.value(true); + }, + child: Scaffold( + appBar: AppBar( + toolbarHeight: 60 * ratio, + title: const SizedBox( + height: 22, + child: Text('Rechercher'), + ), + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.black), + onPressed: () { + _searchProvider.searchController.text = ''; + Navigator.of(context).pop(); + }), + ), + body: SafeArea( + child: Column(children: <Widget>[ + SizedBox(height: isTall ? 200 : 100), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 17), + child: TextField( + controller: _searchProvider.searchController, + autofocus: true, + maxLines: 1, + textAlign: TextAlign.left, + onChanged: (v) => _searchProvider.rebuildWidget(), + decoration: InputDecoration( + filled: true, + fillColor: Colors.white, + prefixIconConstraints: const BoxConstraints( + minHeight: 32, + ), + prefixIcon: const Padding( + padding: EdgeInsets.symmetric(horizontal: 17), + child: Image( + image: AssetImage('assets/loupe-noire.png'), + height: 35), + ), + border: OutlineInputBorder( + borderSide: + BorderSide(color: Colors.grey[500], width: 2), + borderRadius: BorderRadius.circular(8)), + focusedBorder: OutlineInputBorder( + borderSide: + BorderSide(color: Colors.grey[500], width: 2.5), + borderRadius: BorderRadius.circular(8), + ), + contentPadding: const EdgeInsets.all(20), + ), + style: const TextStyle( + fontSize: 20, + color: Colors.black, + fontWeight: FontWeight.w400, + ), + ), + ), + const Spacer(flex: 1), + SizedBox( + width: 410, + height: 70, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 4, + primary: orangeC, // background + onPrimary: Colors.white, // foreground + ), + onPressed: _searchProvider.searchController.text.length >= 2 + ? () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const SearchResultScreen(); + }), + ); + } + : null, + child: const Text( + 'Rechercher', + style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600), + ), + ), + ), + const Spacer(flex: 1), + ]), + ), + )); + } +} diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart new file mode 100644 index 00000000..5c399989 --- /dev/null +++ b/lib/screens/search_result.dart @@ -0,0 +1,45 @@ +import 'package:flutter/services.dart'; +import 'package:gecko/globals.dart'; +import 'package:flutter/material.dart'; +import 'package:gecko/models/search.dart'; +import 'package:provider/provider.dart'; + +class SearchResultScreen extends StatelessWidget { + const SearchResultScreen({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + SearchProvider _searchProvider = Provider.of<SearchProvider>(context); + int nbrResult = 0; + + return Scaffold( + appBar: AppBar( + toolbarHeight: 60 * ratio, + title: const SizedBox( + height: 22, + child: Text('Résultats de votre recherche'), + ), + ), + body: SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: <Widget>[ + const SizedBox(height: 30), + Text( + '$nbrResult résultats pour "${_searchProvider.searchController.text}"', + style: TextStyle(fontSize: 18, color: Colors.grey[700]), + ), + const SizedBox(height: 40), + const Text( + 'Dans la blockchain Ğ1', + style: TextStyle(fontSize: 20), + ) + ]), + ), + ), + ); + } +} diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 4934d675..82110629 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -1,13 +1,11 @@ import 'package:flutter/material.dart'; import 'package:dubp/dubp.dart'; import 'package:flutter/services.dart'; -import 'package:gecko/models/home.dart'; import 'package:gecko/models/my_wallets.dart'; import 'package:gecko/screens/myWallets/generate_wallets.dart'; import 'dart:io'; import 'package:gecko/screens/myWallets/import_cesium_wallet.dart'; import 'package:gecko/globals.dart'; -import 'package:provider/provider.dart'; // ignore: must_be_immutable class SettingsScreen extends StatelessWidget { @@ -29,7 +27,6 @@ class SettingsScreen extends StatelessWidget { @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - HomeProvider _homeProvider = Provider.of<HomeProvider>(context); // getAppDirectory(); return Scaffold( -- GitLab