From 430da9e818e2276c9e4569059fd1b17924beb6c1 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Fri, 20 Aug 2021 00:22:37 +0530 Subject: [PATCH 001/122] updated readme --- README.md | 64 +++++++++++++++++++++++++++++++++++----------- screenshots/1.jpg | Bin 0 -> 280516 bytes screenshots/2.jpg | Bin 0 -> 178774 bytes screenshots/3.jpg | Bin 0 -> 248986 bytes screenshots/4.jpg | Bin 0 -> 652477 bytes 5 files changed, 49 insertions(+), 15 deletions(-) mode change 100644 => 100755 README.md create mode 100755 screenshots/1.jpg create mode 100755 screenshots/2.jpg create mode 100755 screenshots/3.jpg create mode 100755 screenshots/4.jpg diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 2fd7c0a..b307ef0 --- a/README.md +++ b/README.md @@ -1,31 +1,65 @@ # Beacon +## About the Project + This project is a flutter build native interface to ease the group travelling (or hiking). By using this, the group leader would be able to share his location with the entire crew, and in case if someone loses contact with the group, he can quickly get in the right place by following the beacon. ## Getting Started For setting up the development environment, follow the steps given below. -1. For making changes to the project, fork this repository using the green button on this page. +- Clone this repository using `git clone https://github.com//beacon.git` +- `cd` into `beacon` +- Check for flutter setup and connected devices using `flutter doctor` +- Get all the dependencies using `flutter pub get` +- Run the app using `flutter run` -2. Clone your fork or this repository, as applicable. +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. -```bash -git clone https://github.com//beacon.git -cd beacon -``` +## Project Structure -3. Check for flutter setup and connected devices +This project follows MVVM architecture with following structure: ```bash -flutter doctor +beacon/lib/ +├── components/ # Shared Components such as dialog boxes, button, and other shared widgets +├── enums/ # enum files +| └── view_state.dart # defines view states i.e Idle, Busy, Error +├── models/ # model classes: beacon, location, landmark, user +├── queries/ # includes all graphql query strings +├── services/ # services +| ├── database_mutation_function.dart/ # Graphql Queries implementations +| ├── navigation_service.dart/ # All required navigation services +| └── ... # all config files +├── utilities/ # Utilities that includes constants file +├── views/ # Views/UI layer +| ├── auth_screen.dart +| ├── base_view.dart +| ├── hike_screen.dart +| ├── home.dart +├── viewmodels/ # Viewmodels layer +├── splash_screen.dart # Very first screen displayed whilst data is loading +├── router.dart # All routes to ease navigation +├── locator.dart # dependency injection using get_it +├── main.dart # <3 of the app ``` -4. Run the app using -```bash -flutter run --no-sound-null-safety -``` +## Screenshots -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. \ No newline at end of file + + +## Contributing + +Whether you have some feauture requests/ideas, code improvements, refactoring, performance improvements, help is always Welcome. The more is done, better it gets. + +If you found any bugs, consider opening an [issue](https://github.com/CCExtractor/beacon/issues/new). + +**To know the details about features implemented till Google Summer of Code'21 and future todo's please visit [this blog](https://nishthab.tech/blog/1)** + +## Community + +We would love to hear from you! You may join gsoc-beacon channel of CCExtractor community through slack: + +[![Slack](https://img.shields.io/badge/chat-on_slack-purple.svg?style=for-the-badge&logo=slack)](https://ccextractor.org/public/general/support/) \ No newline at end of file diff --git a/screenshots/1.jpg b/screenshots/1.jpg new file mode 100755 index 0000000000000000000000000000000000000000..6088fb69e54d6182b8cb484b12ff64f3b64dd43b GIT binary patch literal 280516 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 z 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

wq^zl_^b_@xqH#NbCE1$p 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%0A? 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≤} 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

wUumsWD$zY`q!x*e-pG>&Yi?_gEuT* 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

  • &qL5{Agtq4x&-^;51L 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 Z_%S)r7!Z8p@((ie|B(Ng3@rJi_%~%55G()y literal 0 HcmV?d00001 diff --git a/screenshots/3.jpg b/screenshots/3.jpg new file mode 100755 index 0000000000000000000000000000000000000000..5f46c082c14f4d90fa55d23e6965939bbe56d7f6 GIT binary patch literal 248986 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%0A0%`n3=Of-x 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 ZZYB4zL%s!C{q+9A{6FJ=NP#`sKLNnz``-Wn literal 0 HcmV?d00001 diff --git a/screenshots/4.jpg b/screenshots/4.jpg new file mode 100755 index 0000000000000000000000000000000000000000..29e80edf9aa8877224b809d7a6a9a71bb6a213ff GIT binary patch literal 652477 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 z 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

    6nfH(UpzKJUd~2NRP;Dlm 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 z zGdm`Bjbo_T{T|>PXau{Fc|c6>ezVQ^Z~_H#54+=Pfu!yYDXz?3doSA;1vhv9)G0)<4|}5d^L}q@H!j3)ikOh5 zU>5n|B?~KA-yp8w^u}iQF$>c{p|O%7tLEh+hktl}t%xC08R%*igcZ$(RxTz*3Pu_t5-Qo?Q31wco1l=(Cl4*0vMjNSBqU%c6|CU6_qWC$;&&{4D0#W z3mM!TjCIL|2GHiHr>~n%K)X9QmO3K(VEWRs2VWsHV{4Benv zYt>2xG4tm;E*YC9zVXxfaJ17Q+;hNc!0T+hseBdw49YH)rt@C+QSOC&_%c((Ol^M4 zSxU!xyjnBnXG#E1gnT3$XUh|Zh6hmPGHe>pQ>PY97X?Fz#9izds)hIYi-bFUIgWTn zWEz;dy#C7Bz5qB6Y!8jAeLL?1SZ(%E|0Ejt8A_&}w0iv^){9nK9(gsnw6&IM{jkr` z+r{gV`A^7)DUr=p3wv`5qGhYV#nZSreh8VfjEvH_LWt2`5CQ-)CE(c9)C+1lY26}V zo!_>G-rOg0YuLLM6ObHv3<>TU6_7$)S!vYp2k?%M1Pl?~jiFwZ4#Bb!I`K5ITF*4b z+0V)529z6eXI!Sytr+d8C(qm#AVCWmH@^Id9n;*o)UbCw3EFN&5cTX}t7WpZsKqqzYsg)G{IvZ0;6 zjaj4J+m4hg9c7<)dR!h!PY4_-4Vli8OLky=?YgbmTVw>5Q$?(395!lSER7Znmk(t~ zT>7@#(w{6x;G5k!>p?pgCNMG(_shlUy6)NRBX5l43gm=(cc-22sdtq&@tQFN0V2c8 znP~*rSq5mtSlKfJd6HA6AmXB;T?ll$tVVK8kQup`AE04SEiD22iHS|<1x1IO>+C82 zx7b?KH=B{d)8W!5RgFt%;j!BEoA3qC`zK61jhiy0v<=8pkKVIjqTUIzC%+R@<|_mT zA&Y35X*ju7-k$ej_sW2s);~N{5qMsdq}_Y#DJoK%+q;dxp!lF(DtQgo7CGHM z|EhIUqM1A*Zx6a{u)^@tEnjc8!^gzJsD3*79VnY-cP0EPN4;icK2qzi*AKF7X_G#S z(tEkW&&2~WliaSHMgenWm?-@ttHT#sIkb-8<3DdJlK?F!^1jT8`gO--iFaH<_7wbP zOIGzVanguS?M-K^!4PRUeOcYJa0mS^j*ibad&^sY{+xaOS)XOrM}Dh*{12~op|h)# zT-`GM)yEV70J+}2v9N`+w^7H~NVbB&bGYsag1ZXz0-u{!>t1tqzDGc^+u&0fz*MWb zLE{7HN>o)~(q9_~WG_Tj6l|%UF33Hc`CTn02sU%vCd#oIVB;N=?|seY!MY-aZYkm2 zZ!&2md`*;@uFZ`noBk43x0c(EY&jusHLovnj!Uge2Cw3#yybhbpMaK5l`@6zxw&)`$FYp8ZSjXZa5g`f9~4+#f^qQKF+uZeXOyXN)No{8A;r zrWMWnThK01VACu9;m>L-WOO*Ue}1uc+;p?b_XX<{7746sfnoRuBTQ;oi=&|{iK)4 z(x(2AU%9cbTf$b>_zKUE*+BE5Hp>1{Cl+5|x_jAZgiI&VGb)FBv9S7rD)K(27ILiA zX-BxS{t zr*3?b#}>Hxo@HTNU>VYO5WS*A&e`mQ@~EpmAQ)IKUxnp|YLBJ`v;^&^(}iYxr>@49 z`}(lvvn$vP^gii)Z=`TvLhPehyIz-_X)j}q1!4{Qs7)kn7bcWzD+ s>s?pFT0bN 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 z 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 z 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

    {-OUD^wI5ie&Lxm=*4cSx@oh=Nu0pCF4vB1+gdb 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 Date: Mon, 23 Aug 2021 01:50:22 +0530 Subject: [PATCH 002/122] handle subscription streams both for beaconJoin and location update --- lib/queries/beacon.dart | 4 + lib/services/database_mutation_functions.dart | 4 +- lib/services/graphql_config.dart | 35 +- lib/services/user_config.dart | 1 + lib/views/hike_screen.dart | 641 ++++++++++-------- 5 files changed, 388 insertions(+), 297 deletions(-) diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index f093c56..c0659e0 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -114,6 +114,10 @@ class BeaconQueries { followers { _id name + location{ + lat + lon + } } landmarks{ title diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 0def226..c73796e 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -16,13 +16,11 @@ import '../locator.dart'; class DataBaseMutationFunctions { GraphQLClient clientNonAuth; GraphQLClient clientAuth; - GraphQLClient webSocketClient; AuthQueries _authQuery; BeaconQueries _beaconQuery; init() { clientNonAuth = graphqlConfig.clientToQuery(); - clientAuth = graphqlConfig.authClient(); - webSocketClient = graphqlConfig.webSocketClient(); + clientAuth = graphqlConfig.graphQlClient(); _authQuery = AuthQueries(); _beaconQuery = BeaconQueries(); } diff --git a/lib/services/graphql_config.dart b/lib/services/graphql_config.dart index c664b9e..e27316e 100644 --- a/lib/services/graphql_config.dart +++ b/lib/services/graphql_config.dart @@ -1,4 +1,5 @@ import 'package:beacon/locator.dart'; +import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:web_socket_channel/web_socket_channel.dart'; @@ -12,10 +13,13 @@ class GraphQLConfig { static final AuthLink authLink = AuthLink(getToken: () async => token); - static final WebSocketLink websocketLink = - WebSocketLink('ws://beacon.aadibajpai.com/subscriptions/', + static WebSocketLink websocketLink = + WebSocketLink('wss://beacon.aadibajpai.com/subscriptions', config: SocketClientConfig( autoReconnect: true, + initialPayload: { + "Authorization": '${userConfig.currentUser.authToken}' + }, )); Future getToken() async { @@ -24,34 +28,21 @@ class GraphQLConfig { return true; } - static final Link link = authLink.concat(httpLink).concat(websocketLink); GraphQLClient clientToQuery() { return GraphQLClient( cache: GraphQLCache(partialDataPolicy: PartialDataCachePolicy.accept), - link: httpLink.concat(websocketLink), + link: httpLink, ); } - GraphQLClient authClient() { - final AuthLink authLink = - AuthLink(getToken: () async => userConfig.currentUser.authToken); - final Link finalAuthLink = authLink.concat(httpLink); + GraphQLClient graphQlClient() { return GraphQLClient( cache: GraphQLCache(), - link: finalAuthLink, + link: Link.split( + (request) => request.isSubscription, + websocketLink, + authLink.concat(httpLink), + ), ); } - - GraphQLClient webSocketClient() { - return GraphQLClient( - cache: GraphQLCache(), - link: - Link.split((request) => request.isSubscription, websocketLink, link), - ); - } - - ValueNotifier client = ValueNotifier(GraphQLClient( - link: link, - cache: GraphQLCache(), - )); } diff --git a/lib/services/user_config.dart b/lib/services/user_config.dart index 32f1a76..d3bee16 100644 --- a/lib/services/user_config.dart +++ b/lib/services/user_config.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; import 'package:beacon/models/user/user_info.dart'; diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 019746a..2180e48 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -46,44 +46,41 @@ class _HikeScreenState extends State { bool isBusy = false; Set markers = {}; StreamSubscription _leaderLocation; - Stream _streamLocation, _streamFollower, _mixedStream; + Stream beaconLocationStream, beaconJoinedStream, mergedStream; List polylineCoordinates = []; PolylinePoints polylinePoints = PolylinePoints(); Map polylines = {}; final GlobalKey _landmarkFormKey = GlobalKey(); ScrollController _scrollController = ScrollController(); Location loc = new Location(); + GraphQLConfig graphQLConfig; + GraphQLClient graphQlClient; PanelController _panelController = PanelController(); + final List mergedStreamSubscriptions = []; - setPolyline() async { - PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( - 'AIzaSyCXlRxfbr9Y368nLy8o59r0_XZmHdK5-2w', // Google Maps API Key - PointLatLng(route.first.latitude, route.first.longitude), - PointLatLng(route.last.latitude, route.last.longitude), - ); - if (result.points.isNotEmpty) { - result.points.forEach((PointLatLng point) { - polylineCoordinates.add(LatLng(point.latitude, point.longitude)); - }); + final beaconLocationSubGql = gql(r''' + subscription StreamBeaconLocation($id: ID!){ + beaconLocation(id: $id){ + lat + lon + } } - PolylineId id = PolylineId('poly'); - Polyline polyline = Polyline( - polylineId: id, - color: Colors.red, - points: polylineCoordinates, - width: 3, - ); - polylines[id] = polyline; - } + '''); - _addMarker() { - markers.add(Marker( - markerId: MarkerId((markers.length + 1).toString()), - position: route.last, - )); - } + // Gql for oreder updated subscription. + final beaconJoinedSubGql = gql(r''' + subscription StreamNewlyJoinedBeacons($id: ID!){ + beaconJoined(id: $id){ + name + location{ + lat + lon + } + } + } + '''); - initSubscriptions() { + void setupSubscriptions() { if (widget.isLeader) { _leaderLocation = loc.onLocationChanged.listen((LocationData currentLocation) async { @@ -105,24 +102,108 @@ class _HikeScreenState extends State { } }); } else { - _streamLocation = GraphQLConfig().client.value.subscribe( - SubscriptionOptions( - document: - gql(BeaconQueries().fetchLocationUpdates(widget.beacon.id)))); + beaconLocationStream = graphQlClient.subscribe( + SubscriptionOptions( + document: beaconLocationSubGql, + variables: { + 'id': widget.beacon.id, + }, + ), + ); } - _streamFollower = GraphQLConfig().client.value.subscribe( - SubscriptionOptions( - document: - gql(BeaconQueries().fetchFollowerUpdates(widget.beacon.id)))); + beaconJoinedStream = graphQlClient.subscribe( + SubscriptionOptions( + document: beaconJoinedSubGql, + variables: { + 'id': widget.beacon.id, + }, + ), + ); if (!widget.isLeader) { - _mixedStream = MergeStream([_streamFollower, _streamLocation]); + mergedStream = MergeStream([beaconLocationStream, beaconJoinedStream]); } else { - _mixedStream = _streamFollower; + mergedStream = beaconJoinedStream; } - setState(() { - isBusy = false; + final mergeStreamSubscription = mergedStream.listen((event) async { + if (event.data != null) { + print('${event.data}'); + if (event.data.containsKey('beaconJoined')) { + User newJoinee = User.fromJson(event.data['beaconJoined']); + setState(() { + hikers.add(newJoinee); + // markers.add(Marker( + // markerId: MarkerId((markers.length + 1).toString()), + // position: LatLng(double.parse(newJoinee.location.lat), + // double.parse(newJoinee.location.lon)), + // infoWindow: InfoWindow( + // title: '${newJoinee.name}', + // ), + // icon: BitmapDescriptor.defaultMarkerWithHue( + // BitmapDescriptor.hueYellow), + // )); + }); + } + if (event.data.containsKey('beaconLocation')) { + print('......'); + LatLng coord = LatLng( + double.parse(event.data['beaconLocation']['lat']), + double.parse(event.data['beaconLocation']['lon'])); + var addresses = await Geocoder.local.findAddressesFromCoordinates( + Coordinates(coord.latitude, coord.longitude)); + + String _address = addresses.first.addressLine; + route.add(coord); + setState(() { + markers.removeWhere((element) => element.markerId == MarkerId("1")); + markers.add(Marker(markerId: MarkerId("1"), position: coord)); + address = _address; + setPolyline(); + }); + } + } }); + + mergedStreamSubscriptions.add(mergeStreamSubscription); + } + + @override + void dispose() { + if (widget.isLeader) { + _leaderLocation.cancel(); + } + for (var streamSub in mergedStreamSubscriptions) { + streamSub.cancel(); + } + super.dispose(); + } + + setPolyline() async { + PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( + 'AIzaSyCXlRxfbr9Y368nLy8o59r0_XZmHdK5-2w', // Google Maps API Key + PointLatLng(route.first.latitude, route.first.longitude), + PointLatLng(route.last.latitude, route.last.longitude), + ); + if (result.points.isNotEmpty) { + result.points.forEach((PointLatLng point) { + polylineCoordinates.add(LatLng(point.latitude, point.longitude)); + }); + } + PolylineId id = PolylineId('poly'); + Polyline polyline = Polyline( + polylineId: id, + color: Colors.red, + points: polylineCoordinates, + width: 3, + ); + polylines[id] = polyline; + } + + _addMarker() { + markers.add(Marker( + markerId: MarkerId((markers.length + 1).toString()), + position: route.last, + )); } fetchData() async { @@ -160,6 +241,18 @@ class _HikeScreenState extends State { BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), )); } + // for (var i in value.followers) { + // markers.add(Marker( + // markerId: MarkerId((markers.length + 1).toString()), + // position: LatLng( + // double.parse(i.location.lat), double.parse(i.location.lon)), + // infoWindow: InfoWindow( + // title: '${i.name}', + // ), + // icon: BitmapDescriptor.defaultMarkerWithHue( + // BitmapDescriptor.hueYellow), + // )); + // } }); }); } @@ -169,15 +262,9 @@ class _HikeScreenState extends State { super.initState(); isBusy = true; fetchData(); - initSubscriptions(); - } - - @override - void dispose() { - super.dispose(); - if (widget.isLeader) { - _leaderLocation.cancel(); - } + graphQlClient = GraphQLConfig().graphQlClient(); + setupSubscriptions(); + isBusy = false; } @override @@ -190,244 +277,254 @@ class _HikeScreenState extends State { onWillPop: () => onWillPop(context), child: Scaffold( body: ModalProgressHUD( - inAsyncCall: isGeneratingLink || isBusy, - child: StreamBuilder( - stream: _mixedStream, - builder: (context, snapshot) { - if (snapshot.hasData) { - print(snapshot.data); - if (snapshot.data.data != null && - snapshot?.data?.data['beaconJoined'] != null) { - User newJoinee = - User.fromJson(snapshot.data.data['beaconJoined']); - setState(() { - hikers.add(newJoinee); - }); - } else if (snapshot.data.data != null && - snapshot?.data?.data['beaconLocation'] != null) { - setState(() { - markers.removeWhere( - (element) => element.markerId == MarkerId("1")); - markers.add(Marker( - markerId: MarkerId("1"), - position: LatLng( - double.parse(snapshot - .data.data['beaconLocation']['lat']), - double.parse(snapshot - .data.data['beaconLocation']['lon'])))); - }); - } - } - return SlidingUpPanel( - maxHeight: MediaQuery.of(context).size.height * 0.6, - minHeight: 154, - controller: _panelController, - collapsed: Container( - decoration: BoxDecoration( - color: kBlue, - borderRadius: BorderRadius.only( - topRight: Radius.circular(10), - topLeft: Radius.circular(10))), - child: Column( - children: [ - SizedBox( - height: 12.0, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 60, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all( - Radius.circular(12.0))), - ), - ], - ), - SizedBox( - height: 10, - ), + inAsyncCall: isGeneratingLink || isBusy, + child: + // StreamBuilder( + // stream: graphQlClient.subscribe(SubscriptionOptions( + // document: gql(r''' + // subscription BeaconJoined($id: ID!){ + // beaconJoined (id: $id) { + // _id + // name + // } + // } + // '''), + // operationName: "BeaconJoined", + // variables: {'id': widget.beacon.id})), + // builder: (context, snapshot) { + // if (snapshot.hasData) { + // print(snapshot.data); + // if (snapshot.data.data != null && + // snapshot?.data?.data['beaconJoined'] != null) { + // print('${snapshot.data}'); + // User newJoinee = + // User.fromJson(snapshot.data.data['beaconJoined']); + // setState(() { + // hikers.add(newJoinee); + // }); + // } else if (snapshot.data.data != null && + // snapshot?.data?.data['beaconLocation'] != null) { + // setState(() { + // markers.removeWhere( + // (element) => element.markerId == MarkerId("1")); + // markers.add(Marker( + // markerId: MarkerId("1"), + // position: LatLng( + // double.parse(snapshot + // .data.data['beaconLocation']['lat']), + // double.parse(snapshot + // .data.data['beaconLocation']['lon'])))); + // }); + // } + // } + // return + SlidingUpPanel( + maxHeight: MediaQuery.of(context).size.height * 0.6, + minHeight: 154, + controller: _panelController, + collapsed: Container( + decoration: BoxDecoration( + color: kBlue, + borderRadius: BorderRadius.only( + topRight: Radius.circular(10), + topLeft: Radius.circular(10))), + child: Column( + children: [ + SizedBox( + height: 12.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ Container( - width: double.infinity, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 15), - child: RichText( - text: TextSpan( - style: TextStyle( - fontWeight: FontWeight.bold), - children: [ - TextSpan( - text: isBeaconExpired - ? 'Beacon has been expired\n' - : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', - style: TextStyle(fontSize: 16)), - TextSpan( - text: - 'Beacon holder at: $address\n', - style: TextStyle(fontSize: 14)), - TextSpan( - text: - 'Total Followers: ${hikers.length - 1} (Swipe to view the list of followers)\n', - style: TextStyle(fontSize: 12)), - TextSpan( - text: - 'Share this passkey to add user: ${widget.beacon.shortcode}\n', - style: TextStyle(fontSize: 12)), - ]), - ), - ), - height: 120, + width: 60, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all( + Radius.circular(12.0))), ), ], ), - ), - panel: _panel(_scrollController), - body: Stack( - alignment: Alignment.topCenter, - children: [ - GoogleMap( - mapType: MapType.terrain, - markers: markers.toSet(), - polylines: Set.of(polylines.values), - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon)), - zoom: 17.0), - onMapCreated: (GoogleMapController controller) { - mapController.complete(controller); - }, - onTap: (loc) async { - String title; - showDialog( - context: context, - builder: (context) => Dialog( - child: Container( - height: 250, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Form( - key: _landmarkFormKey, - child: Column( - children: [ - Container( - height: 100, - child: Padding( - padding: - const EdgeInsets.all(4.0), - child: TextFormField( - onChanged: (key) { - title = key; - }, - validator: (value) { - if (value == null || - value.isEmpty) { - return "Please enter title for landmark"; - } else { - return null; - } - }, - decoration: InputDecoration( - alignLabelWithHint: true, - floatingLabelBehavior: - FloatingLabelBehavior - .always, - hintText: - 'Add title for the landmark', - hintStyle: TextStyle( - fontSize: 15, - color: kBlack), - labelText: 'Title', - labelStyle: TextStyle( - fontSize: 20, - color: kYellow), - ), - ), + SizedBox( + height: 10, + ), + Container( + width: double.infinity, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15), + child: RichText( + text: TextSpan( + style: + TextStyle(fontWeight: FontWeight.bold), + children: [ + TextSpan( + text: isBeaconExpired + ? 'Beacon has been expired\n' + : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', + style: TextStyle(fontSize: 16)), + TextSpan( + text: 'Beacon holder at: $address\n', + style: TextStyle(fontSize: 14)), + TextSpan( + text: + 'Total Followers: ${hikers.length - 1} (Swipe to view the list of followers)\n', + style: TextStyle(fontSize: 12)), + TextSpan( + text: + 'Share this passkey to add user: ${widget.beacon.shortcode}\n', + style: TextStyle(fontSize: 12)), + ]), + ), + ), + height: 120, + ), + ], + ), + ), + panel: _panel(_scrollController), + body: Stack( + alignment: Alignment.topCenter, + children: [ + GoogleMap( + mapType: MapType.terrain, + markers: markers.toSet(), + polylines: Set.of(polylines.values), + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon)), + zoom: 17.0), + onMapCreated: (GoogleMapController controller) { + mapController.complete(controller); + }, + onTap: (loc) async { + String title; + showDialog( + context: context, + builder: (context) => Dialog( + child: Container( + height: 250, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 32, vertical: 16), + child: Form( + key: _landmarkFormKey, + child: Column( + children: [ + Container( + height: 100, + child: Padding( + padding: + const EdgeInsets.all(4.0), + child: TextFormField( + onChanged: (key) { + title = key; + }, + validator: (value) { + if (value == null || + value.isEmpty) { + return "Please enter title for landmark"; + } else { + return null; + } + }, + decoration: InputDecoration( + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior + .always, + hintText: + 'Add title for the landmark', + hintStyle: TextStyle( + fontSize: 15, + color: kBlack), + labelText: 'Title', + labelStyle: TextStyle( + fontSize: 20, + color: kYellow), ), - color: kLightBlue, - ), - SizedBox( - height: 30, ), - Flexible( - child: HikeButton( - buttonWidth: 25, - text: 'Create Landmark', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () async { - if (_landmarkFormKey - .currentState - .validate()) { - navigationService.pop(); - await databaseFunctions - .init(); - await databaseFunctions - .createLandmark( - title, - loc, - beacon.id) - .then((value) { - setState(() { - markers.add(Marker( - markerId: MarkerId( - (markers.length + - 1) - .toString()), - position: loc, - infoWindow: - InfoWindow( - title: '$title', - ), - icon: BitmapDescriptor - .defaultMarkerWithHue( - BitmapDescriptor - .hueBlue), - )); - }); - }); - } - }), - ), - ], + ), + color: kLightBlue, + ), + SizedBox( + height: 30, ), - ), + Flexible( + child: HikeButton( + buttonWidth: 25, + text: 'Create Landmark', + textColor: Colors.white, + buttonColor: kYellow, + onTap: () async { + if (_landmarkFormKey + .currentState + .validate()) { + navigationService.pop(); + await databaseFunctions + .init(); + await databaseFunctions + .createLandmark(title, + loc, beacon.id) + .then((value) { + setState(() { + markers.add(Marker( + markerId: MarkerId( + (markers.length + + 1) + .toString()), + position: loc, + infoWindow: + InfoWindow( + title: '$title', + ), + icon: BitmapDescriptor + .defaultMarkerWithHue( + BitmapDescriptor + .hueBlue), + )); + }); + }); + } + }), + ), + ], ), ), ), - ); - }, - ), - CustomPaint( - size: Size(screenWidth, screenHeight), - foregroundPainter: ShapePainter(), - ), - Align( - alignment: Alignment(0.9, -0.8), - child: HikeScreenWidget.shareButton( - context, widget.beacon.shortcode)), - Align( - alignment: Alignment(-0.8, -0.8), - child: GestureDetector( - onTap: () { - onWillPop(context); - }, - child: Icon( - Icons.arrow_back, - size: 30, - color: Colors.white, ), ), + ); + }, + ), + CustomPaint( + size: Size(screenWidth, screenHeight), + foregroundPainter: ShapePainter(), + ), + Align( + alignment: Alignment(0.9, -0.8), + child: HikeScreenWidget.shareButton( + context, widget.beacon.shortcode)), + Align( + alignment: Alignment(-0.8, -0.8), + child: GestureDetector( + onTap: () { + onWillPop(context); + }, + child: Icon( + Icons.arrow_back, + size: 30, + color: Colors.white, ), - ], + ), ), - ); - }), - ), + ], + ), + ) + // }), + ), ), ); } From d1c11e84499070eadc64c2595074fcf29f06149f Mon Sep 17 00:00:00 2001 From: nb9960 Date: Tue, 24 Aug 2021 21:12:58 +0530 Subject: [PATCH 003/122] set auto focus to the new location and remove unnecessary code --- lib/components/beacon_card.dart | 3 - lib/components/create_join_dialog.dart | 1 - lib/queries/beacon.dart | 44 ++++---- lib/utilities/constants.dart | 3 + lib/views/hike_screen.dart | 147 +++++++++---------------- pubspec.lock | 9 +- pubspec.yaml | 1 + 7 files changed, 86 insertions(+), 122 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index 3151e0f..55c8334 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -3,11 +3,8 @@ import 'dart:io'; import 'package:beacon/locator.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/utilities/constants.dart'; -import 'package:beacon/view_model/home_view_model.dart'; import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; -import 'package:geocoder/geocoder.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:skeleton_text/skeleton_text.dart'; import 'package:intl/intl.dart'; diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 58b657f..12c9025 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -1,7 +1,6 @@ import 'package:beacon/locator.dart'; import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/services/validators.dart'; -import 'package:date_time_picker/date_time_picker.dart'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index c0659e0..bcfd323 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -1,5 +1,7 @@ import 'dart:ffi'; +import 'package:graphql_flutter/graphql_flutter.dart'; + class BeaconQueries { String createBeacon(String title, int expiresAt, String lat, String lon) { return ''' @@ -177,31 +179,27 @@ class BeaconQueries { '''; } - String fetchLocationUpdates(String id) { - return ''' - subscription { - beaconLocation (id: "$id") { - lat - lon - } - } - '''; - } + final beaconLocationSubGql = gql(r''' + subscription StreamBeaconLocation($id: ID!){ + beaconLocation(id: $id){ + lat + lon + } + } + '''); - String fetchUserLocation(String id) { - return ''' - subscription { - userLocation (id: "$id") { - _id - name - location{ - lat - lon - } - } + // Gql for oreder updated subscription. + final beaconJoinedSubGql = gql(r''' + subscription StreamNewlyJoinedBeacons($id: ID!){ + beaconJoined(id: $id){ + name + location{ + lat + lon } - '''; - } + } + } + '''); String fetchFollowerUpdates(String id) { return ''' diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index 68eed07..93db2c1 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -7,6 +7,9 @@ const Color kBlue = Color(0xFF222375); const Color kLightBlue = Color(0xFFE8F1F8); const Color kBlack = Color(0xFF343434); const Color shimmerSkeletonColor = Color(0xff4e4f91); +const double CAMERA_ZOOM = 15; +const double CAMERA_TILT = 80; +const double CAMERA_BEARING = 30; class AppConstants { static Future getLocation() async { diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 2180e48..915016a 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,11 +1,7 @@ import 'dart:async'; import 'package:beacon/components/hike_button.dart'; -import 'package:flutter/rendering.dart'; -import 'package:beacon/components/create_join_dialog.dart'; -import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/queries/beacon.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/gestures.dart'; +import 'package:flutter/rendering.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; @@ -45,40 +41,39 @@ class _HikeScreenState extends State { String address, prevAddress; bool isBusy = false; Set markers = {}; + Set _polylines = Set(); StreamSubscription _leaderLocation; Stream beaconLocationStream, beaconJoinedStream, mergedStream; List polylineCoordinates = []; PolylinePoints polylinePoints = PolylinePoints(); - Map polylines = {}; final GlobalKey _landmarkFormKey = GlobalKey(); ScrollController _scrollController = ScrollController(); Location loc = new Location(); - GraphQLConfig graphQLConfig; GraphQLClient graphQlClient; PanelController _panelController = PanelController(); final List mergedStreamSubscriptions = []; - final beaconLocationSubGql = gql(r''' - subscription StreamBeaconLocation($id: ID!){ - beaconLocation(id: $id){ - lat - lon - } - } - '''); - - // Gql for oreder updated subscription. - final beaconJoinedSubGql = gql(r''' - subscription StreamNewlyJoinedBeacons($id: ID!){ - beaconJoined(id: $id){ - name - location{ - lat - lon - } - } - } - '''); + void updatePinOnMap(LatLng loc) async { + CameraPosition cPosition = CameraPosition( + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING, + target: loc, + ); + final GoogleMapController controller = await mapController.future; + controller.animateCamera(CameraUpdate.newCameraPosition(cPosition)); + setState(() { + var pinPosition = loc; + markers.removeWhere((m) => m.markerId.value == "1"); + markers.add(Marker( + markerId: MarkerId("1"), + position: pinPosition, // updated position + infoWindow: InfoWindow( + title: 'Current Location', + ), + )); + }); + } void setupSubscriptions() { if (widget.isLeader) { @@ -96,7 +91,8 @@ class _HikeScreenState extends State { LatLng(currentLocation.latitude, currentLocation.longitude)); setState(() { address = _address; - _addMarker(); + updatePinOnMap( + LatLng(currentLocation.latitude, currentLocation.longitude)); setPolyline(); }); } @@ -104,7 +100,7 @@ class _HikeScreenState extends State { } else { beaconLocationStream = graphQlClient.subscribe( SubscriptionOptions( - document: beaconLocationSubGql, + document: BeaconQueries().beaconLocationSubGql, variables: { 'id': widget.beacon.id, }, @@ -114,7 +110,7 @@ class _HikeScreenState extends State { beaconJoinedStream = graphQlClient.subscribe( SubscriptionOptions( - document: beaconJoinedSubGql, + document: BeaconQueries().beaconJoinedSubGql, variables: { 'id': widget.beacon.id, }, @@ -145,7 +141,6 @@ class _HikeScreenState extends State { }); } if (event.data.containsKey('beaconLocation')) { - print('......'); LatLng coord = LatLng( double.parse(event.data['beaconLocation']['lat']), double.parse(event.data['beaconLocation']['lon'])); @@ -155,10 +150,9 @@ class _HikeScreenState extends State { String _address = addresses.first.addressLine; route.add(coord); setState(() { - markers.removeWhere((element) => element.markerId == MarkerId("1")); - markers.add(Marker(markerId: MarkerId("1"), position: coord)); + updatePinOnMap(coord); address = _address; - setPolyline(); + // setPolyline(); }); } } @@ -179,7 +173,7 @@ class _HikeScreenState extends State { } setPolyline() async { - PolylineResult result = await polylinePoints.getRouteBetweenCoordinates( + PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( 'AIzaSyCXlRxfbr9Y368nLy8o59r0_XZmHdK5-2w', // Google Maps API Key PointLatLng(route.first.latitude, route.first.longitude), PointLatLng(route.last.latitude, route.last.longitude), @@ -189,21 +183,15 @@ class _HikeScreenState extends State { polylineCoordinates.add(LatLng(point.latitude, point.longitude)); }); } - PolylineId id = PolylineId('poly'); - Polyline polyline = Polyline( - polylineId: id, - color: Colors.red, - points: polylineCoordinates, - width: 3, - ); - polylines[id] = polyline; - } - - _addMarker() { - markers.add(Marker( - markerId: MarkerId((markers.length + 1).toString()), - position: route.last, - )); + setState(() { + Polyline polyline = Polyline( + polylineId: PolylineId('poly'), + color: Colors.red, + points: polylineCoordinates, + width: 3, + ); + _polylines.add(polyline); + }); } fetchData() async { @@ -224,10 +212,16 @@ class _HikeScreenState extends State { markers.add(Marker( markerId: MarkerId("0"), position: route.first, + infoWindow: InfoWindow( + title: 'Initial Location', + ), )); markers.add(Marker( markerId: MarkerId("1"), position: route.last, + infoWindow: InfoWindow( + title: 'Current Location', + ), )); for (var i in value.landmarks) { markers.add(Marker( @@ -261,6 +255,7 @@ class _HikeScreenState extends State { void initState() { super.initState(); isBusy = true; + beacon = widget.beacon; fetchData(); graphQlClient = GraphQLConfig().graphQlClient(); setupSubscriptions(); @@ -278,47 +273,7 @@ class _HikeScreenState extends State { child: Scaffold( body: ModalProgressHUD( inAsyncCall: isGeneratingLink || isBusy, - child: - // StreamBuilder( - // stream: graphQlClient.subscribe(SubscriptionOptions( - // document: gql(r''' - // subscription BeaconJoined($id: ID!){ - // beaconJoined (id: $id) { - // _id - // name - // } - // } - // '''), - // operationName: "BeaconJoined", - // variables: {'id': widget.beacon.id})), - // builder: (context, snapshot) { - // if (snapshot.hasData) { - // print(snapshot.data); - // if (snapshot.data.data != null && - // snapshot?.data?.data['beaconJoined'] != null) { - // print('${snapshot.data}'); - // User newJoinee = - // User.fromJson(snapshot.data.data['beaconJoined']); - // setState(() { - // hikers.add(newJoinee); - // }); - // } else if (snapshot.data.data != null && - // snapshot?.data?.data['beaconLocation'] != null) { - // setState(() { - // markers.removeWhere( - // (element) => element.markerId == MarkerId("1")); - // markers.add(Marker( - // markerId: MarkerId("1"), - // position: LatLng( - // double.parse(snapshot - // .data.data['beaconLocation']['lat']), - // double.parse(snapshot - // .data.data['beaconLocation']['lon'])))); - // }); - // } - // } - // return - SlidingUpPanel( + child: SlidingUpPanel( maxHeight: MediaQuery.of(context).size.height * 0.6, minHeight: 154, controller: _panelController, @@ -388,16 +343,20 @@ class _HikeScreenState extends State { alignment: Alignment.topCenter, children: [ GoogleMap( + compassEnabled: true, mapType: MapType.terrain, markers: markers.toSet(), - polylines: Set.of(polylines.values), + polylines: _polylines, initialCameraPosition: CameraPosition( target: LatLng( double.parse(widget.beacon.location.lat), double.parse(widget.beacon.location.lon)), - zoom: 17.0), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), onMapCreated: (GoogleMapController controller) { mapController.complete(controller); + // setPolyline(); }, onTap: (loc) async { String title; diff --git a/pubspec.lock b/pubspec.lock index d9554d9..b178055 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -36,6 +36,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.6.1" + awesome_notifications: + dependency: "direct main" + description: + name: awesome_notifications + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.6+10" boolean_selector: dependency: transitive description: @@ -942,4 +949,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.13.0 <3.0.0" - flutter: ">=1.22.0" + flutter: ">=2.0.4" diff --git a/pubspec.yaml b/pubspec.yaml index 45fdab0..d0e57a3 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,6 +30,7 @@ dependencies: location: ^4.3.0 rxdart: ^0.26.0 flutter_polyline_points: ^1.0.0 + awesome_notifications: ^0.0.6+10 sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 flutter_duration_picker: From 806abe4f0d533c57871e93c125141f145309c72d Mon Sep 17 00:00:00 2001 From: nb9960 Date: Wed, 25 Aug 2021 21:31:42 +0530 Subject: [PATCH 004/122] add blog link in readme for project insights --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b307ef0..2e5a87a 100755 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Whether you have some feauture requests/ideas, code improvements, refactoring, p If you found any bugs, consider opening an [issue](https://github.com/CCExtractor/beacon/issues/new). -**To know the details about features implemented till Google Summer of Code'21 and future todo's please visit [this blog](https://nishthab.tech/blog/1)** +**To know the details about features implemented till Google Summer of Code'21 and future todo's please visit [this blog](https://blog.nishthab.tech/gsoc-2021-ccextractor-beacon)** ## Community From ce8f8a1101e00e4a809d923272bc08809965b6a5 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Wed, 25 Aug 2021 22:43:01 +0530 Subject: [PATCH 005/122] add overlay support to display in app notification --- lib/main.dart | 17 ++++++++++------- lib/views/hike_screen.dart | 25 +++++++++++++++++++++++++ pubspec.lock | 37 +++++++++++++++++++++++++++++-------- pubspec.yaml | 3 ++- 4 files changed, 66 insertions(+), 16 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 2a9cc56..54885a2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; +import 'package:overlay_support/overlay_support.dart'; import 'package:path_provider/path_provider.dart' as path_provider; import 'models/user/user_info.dart'; @@ -29,13 +30,15 @@ void main() async { await Hive.openBox('currentUser'); await Hive.openBox('beacons'); setupLocator(); - runApp(MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Beacon', - navigatorKey: navigationService.navigatorKey, - theme: ThemeData(fontFamily: 'FuturaBold'), - initialRoute: '/', - onGenerateRoute: router.generateRoute, + runApp(OverlaySupport( + child: MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Beacon', + navigatorKey: navigationService.navigatorKey, + theme: ThemeData(fontFamily: 'FuturaBold'), + initialRoute: '/', + onGenerateRoute: router.generateRoute, + ), )); } diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 915016a..9f359ce 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -19,6 +19,7 @@ import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/models/user/user_info.dart'; import 'package:beacon/services/graphql_config.dart'; import 'package:beacon/utilities/constants.dart'; +import 'package:overlay_support/overlay_support.dart'; import 'package:rxdart/rxdart.dart'; import 'package:sliding_up_panel/sliding_up_panel.dart'; @@ -126,6 +127,30 @@ class _HikeScreenState extends State { print('${event.data}'); if (event.data.containsKey('beaconJoined')) { User newJoinee = User.fromJson(event.data['beaconJoined']); + + showOverlayNotification((context) { + return Card( + color: kLightBlue, + margin: const EdgeInsets.symmetric(horizontal: 4), + child: SafeArea( + child: ListTile( + leading: SizedBox.fromSize( + size: const Size(40, 40), + child: ClipOval( + child: Container( + child: + Image(image: AssetImage('images/male_avatar.png')), + ))), + title: Text('${newJoinee.name} joined the hike!'), + trailing: IconButton( + icon: Icon(Icons.close), + onPressed: () { + OverlaySupportEntry.of(context).dismiss(); + }), + ), + ), + ); + }, duration: Duration(milliseconds: 4000)); setState(() { hikers.add(newJoinee); // markers.add(Marker( diff --git a/pubspec.lock b/pubspec.lock index b178055..ad4a3f4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -36,13 +36,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.6.1" - awesome_notifications: - dependency: "direct main" - description: - name: awesome_notifications - url: "https://pub.dartlang.org" - source: hosted - version: "0.0.6+10" boolean_selector: dependency: transitive description: @@ -288,6 +281,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.9.1" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.1+1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -592,6 +599,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.5.4" + overlay_support: + dependency: "direct main" + description: + name: overlay_support + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" package_config: dependency: transitive description: @@ -856,6 +870,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.3.0" + timezone: + dependency: transitive + description: + name: timezone + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0" timing: dependency: transitive description: @@ -949,4 +970,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.13.0 <3.0.0" - flutter: ">=2.0.4" + flutter: ">=2.2.0" diff --git a/pubspec.yaml b/pubspec.yaml index d0e57a3..cfeac61 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,7 +30,8 @@ dependencies: location: ^4.3.0 rxdart: ^0.26.0 flutter_polyline_points: ^1.0.0 - awesome_notifications: ^0.0.6+10 + flutter_local_notifications: ^8.1.1+1 + overlay_support: ^1.2.1 sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 flutter_duration_picker: From 3c1e908a0aac9b801566c9f74d836bf97f659a95 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Thu, 26 Aug 2021 20:46:23 +0530 Subject: [PATCH 006/122] add interval for location update --- lib/views/hike_screen.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 9f359ce..fe25a82 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -76,10 +76,13 @@ class _HikeScreenState extends State { }); } - void setupSubscriptions() { + Future setupSubscriptions() async { if (widget.isLeader) { + // distanceFilter (in m) can be changed to reduce the backend calls + await loc.changeSettings(interval: 3000, distanceFilter: 0.0); _leaderLocation = loc.onLocationChanged.listen((LocationData currentLocation) async { + print('............'); Coordinates coordinates = Coordinates(currentLocation.latitude, currentLocation.longitude); var addresses = From c2851fdfca080b3571bfb8f50c9aabb063492450 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Thu, 26 Aug 2021 22:13:10 +0530 Subject: [PATCH 007/122] store maps api key as a variable and update readme --- README.md | 5 ++- android/app/build.gradle | 4 +++ android/app/src/main/AndroidManifest.xml | 2 +- lib/main.dart | 1 - lib/views/hike_screen.dart | 39 ++++++++++++------------ 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 2e5a87a..1f39b7f 100755 --- a/README.md +++ b/README.md @@ -8,10 +8,13 @@ This project is a flutter build native interface to ease the group travelling (o For setting up the development environment, follow the steps given below. -- Clone this repository using `git clone https://github.com//beacon.git` +- Clone this repository after forking using `git clone https://github.com//beacon.git` - `cd` into `beacon` - Check for flutter setup and connected devices using `flutter doctor` - Get all the dependencies using `flutter pub get` +- Add your Google Maps API key either by adding `MAPS_API_KEY` variable in `android/local.properties` file or by exporting it as a System environment variable by using the command `export MAPS_API_KEY=YOUR_API_KEY` (You can get your API Key with this [steps](https://developers.google.com/maps/documentation/android-sdk/get-api-key)). + + By this `build.gradle` will first find the `MAPS_API_KEY` on the `local.properties` file, but if there’s none (such as in production), it will search for the variable on the environment variable. - Run the app using `flutter run` For help getting started with Flutter, view our diff --git a/android/app/build.gradle b/android/app/build.gradle index 3c13d76..478064c 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -5,6 +5,9 @@ if (localPropertiesFile.exists()) { localProperties.load(reader) } } +def localPropertyApiToken = localProperties.getProperty("MAPS_API_KEY") +def systemEnvApiToken = System.getenv('MAPS_API_KEY') +def MAPS_API_KEY = localPropertyApiToken != null ? localPropertyApiToken : systemEnvApiToken def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { @@ -42,6 +45,7 @@ android { multiDexEnabled true versionCode flutterVersionCode.toInteger() versionName flutterVersionName + manifestPlaceholders = [mapsApiKey: MAPS_API_KEY] } buildTypes { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c40b9f6..d5c5fd7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:label="Beacon" android:icon="@mipmap/launcher_icon" android:usesCleartextTraffic="true"> - + { await loc.changeSettings(interval: 3000, distanceFilter: 0.0); _leaderLocation = loc.onLocationChanged.listen((LocationData currentLocation) async { - print('............'); Coordinates coordinates = Coordinates(currentLocation.latitude, currentLocation.longitude); var addresses = @@ -201,25 +200,25 @@ class _HikeScreenState extends State { } setPolyline() async { - PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( - 'AIzaSyCXlRxfbr9Y368nLy8o59r0_XZmHdK5-2w', // Google Maps API Key - PointLatLng(route.first.latitude, route.first.longitude), - PointLatLng(route.last.latitude, route.last.longitude), - ); - if (result.points.isNotEmpty) { - result.points.forEach((PointLatLng point) { - polylineCoordinates.add(LatLng(point.latitude, point.longitude)); - }); - } - setState(() { - Polyline polyline = Polyline( - polylineId: PolylineId('poly'), - color: Colors.red, - points: polylineCoordinates, - width: 3, - ); - _polylines.add(polyline); - }); + // PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( + // '${localProperties[MAPS_API_KEY]}', // Google Maps API Key + // PointLatLng(route.first.latitude, route.first.longitude), + // PointLatLng(route.last.latitude, route.last.longitude), + // ); + // if (result.points.isNotEmpty) { + // result.points.forEach((PointLatLng point) { + // polylineCoordinates.add(LatLng(point.latitude, point.longitude)); + // }); + // } + // setState(() { + // Polyline polyline = Polyline( + // polylineId: PolylineId('poly'), + // color: Colors.red, + // points: polylineCoordinates, + // width: 3, + // ); + // _polylines.add(polyline); + // }); } fetchData() async { From 9b58fc06720a0d3353e63c656a063fcc7f0cf1d7 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Sat, 28 Aug 2021 01:59:53 +0530 Subject: [PATCH 008/122] handle token updates --- .gitignore | 1 + README.md | 4 +- android/app/build.gradle | 7 +--- android/app/src/main/AndroidManifest.xml | 2 +- lib/main.dart | 2 + lib/queries/auth.dart | 40 +++++++++---------- lib/services/database_mutation_functions.dart | 19 ++++----- lib/services/graphql_config.dart | 14 +++++-- lib/view_model/auth_screen_model.dart | 12 ++++-- lib/views/hike_screen.dart | 39 +++++++++--------- pubspec.lock | 7 ++++ pubspec.yaml | 1 + 12 files changed, 82 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index 0fa6b67..dadf4ef 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ .buildlog/ .history .svn/ +*.env # IntelliJ related *.iml diff --git a/README.md b/README.md index 1f39b7f..3e654ab 100755 --- a/README.md +++ b/README.md @@ -12,9 +12,7 @@ For setting up the development environment, follow the steps given below. - `cd` into `beacon` - Check for flutter setup and connected devices using `flutter doctor` - Get all the dependencies using `flutter pub get` -- Add your Google Maps API key either by adding `MAPS_API_KEY` variable in `android/local.properties` file or by exporting it as a System environment variable by using the command `export MAPS_API_KEY=YOUR_API_KEY` (You can get your API Key with this [steps](https://developers.google.com/maps/documentation/android-sdk/get-api-key)). - - By this `build.gradle` will first find the `MAPS_API_KEY` on the `local.properties` file, but if there’s none (such as in production), it will search for the variable on the environment variable. +- Create a .env file in the root folder and add `MAPS_API_KEY=your_google_maps_api_key_here` - Run the app using `flutter run` For help getting started with Flutter, view our diff --git a/android/app/build.gradle b/android/app/build.gradle index 478064c..02ed2f9 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -5,10 +5,6 @@ if (localPropertiesFile.exists()) { localProperties.load(reader) } } -def localPropertyApiToken = localProperties.getProperty("MAPS_API_KEY") -def systemEnvApiToken = System.getenv('MAPS_API_KEY') -def MAPS_API_KEY = localPropertyApiToken != null ? localPropertyApiToken : systemEnvApiToken - def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") @@ -27,7 +23,7 @@ if (flutterVersionName == null) { apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - +apply from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle" android { compileSdkVersion 30 @@ -45,7 +41,6 @@ android { multiDexEnabled true versionCode flutterVersionCode.toInteger() versionName flutterVersionName - manifestPlaceholders = [mapsApiKey: MAPS_API_KEY] } buildTypes { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index d5c5fd7..c8d63a7 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:label="Beacon" android:icon="@mipmap/launcher_icon" android:usesCleartextTraffic="true"> - + login({String email, String password, User user}) async { - final QueryResult result = (user != null && email == null) + final QueryResult result = (email == null) ? await clientNonAuth.mutate( MutationOptions(document: gql(_authQuery.loginUsingID(user.id)))) : await clientNonAuth.mutate(MutationOptions( document: gql(_authQuery.loginUser(email, password)))); if (result.hasException) { - navigationService.showSnackBar( - "Something went wrong: ${result.exception.graphqlErrors.first.message}"); + navigationService + .showSnackBar("${result.exception.graphqlErrors.first.message}"); print("${result.exception.graphqlErrors}"); return false; } else if (result.data != null && result.isConcrete) { bool userSaved = false; - if (user != null && email == null) { + if (email == null) { user.isGuest = true; user.authToken = "Bearer ${result.data['login']}"; userSaved = await userConfig.updateUser(user); } else { - final User loggedInUser = + User loggedInUser = User(authToken: "Bearer ${result.data['login']}", isGuest: false); userSaved = await userConfig.updateUser(loggedInUser); } @@ -142,6 +142,7 @@ class DataBaseMutationFunctions { } Future fetchCurrentUserInfo() async { + await databaseFunctions.init(); final QueryResult result = await clientAuth .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); if (result.hasException) { @@ -152,12 +153,12 @@ class DataBaseMutationFunctions { navigationService.pushReplacementScreen('/auth'); } } else if (result.data != null && result.isConcrete) { - final User userInfo = User.fromJson( + User userInfo = User.fromJson( result.data['me'] as Map, ); userInfo.authToken = userConfig.currentUser.authToken; userInfo.isGuest = userConfig.currentUser.isGuest; - userConfig.updateUser(userInfo); + await userConfig.updateUser(userInfo); return true; } return false; diff --git a/lib/services/graphql_config.dart b/lib/services/graphql_config.dart index e27316e..a19f406 100644 --- a/lib/services/graphql_config.dart +++ b/lib/services/graphql_config.dart @@ -1,9 +1,5 @@ import 'package:beacon/locator.dart'; -import 'package:beacon/models/user/user_info.dart'; -import 'package:flutter/material.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; -import 'package:web_socket_channel/io.dart'; class GraphQLConfig { static String token; @@ -35,6 +31,16 @@ class GraphQLConfig { ); } + Future authClient() async { + await getToken(); + final AuthLink authLink = AuthLink(getToken: () async => '$token'); + final Link finalAuthLink = authLink.concat(httpLink); + return GraphQLClient( + cache: GraphQLCache(partialDataPolicy: PartialDataCachePolicy.accept), + link: finalAuthLink, + ); + } + GraphQLClient graphQlClient() { return GraphQLClient( cache: GraphQLCache(), diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 4ce1aff..86fed6d 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -51,7 +51,8 @@ class AuthViewModel extends BaseModel { userConfig.currentUser.print(); navigationService.removeAllAndPush('/main', '/'); } else { - navigationService.showSnackBar('SomeThing went wrong'); + navigationService.removeAllAndPush('/auth', '/'); + navigationService.showSnackBar('Something went wrong'); } setState(ViewState.idle); } else { @@ -61,14 +62,16 @@ class AuthViewModel extends BaseModel { loginAsGuest() async { setState(ViewState.busy); - databaseFunctions.init(); + await databaseFunctions.init(); final bool signUpSuccess = await databaseFunctions.signup(name: "Anonymous"); if (signUpSuccess) { userConfig.currentUser.print(); + navigationService.removeAllAndPush('/main', '/'); } else { - navigationService.showSnackBar('SomeThing went wrong'); + navigationService.removeAllAndPush('/auth', '/'); + navigationService.showSnackBar('Something went wrong'); } setState(ViewState.idle); } @@ -87,7 +90,8 @@ class AuthViewModel extends BaseModel { userConfig.currentUser.print(); navigationService.removeAllAndPush('/main', '/'); } else { - navigationService.showSnackBar('SomeThing went wrong'); + navigationService.removeAllAndPush('/auth', '/'); + navigationService.showSnackBar('Something went wrong'); } setState(ViewState.idle); } else { diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 1181b78..6981be5 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -3,6 +3,7 @@ import 'package:beacon/components/hike_button.dart'; import 'package:beacon/queries/beacon.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_config/flutter_config.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -200,25 +201,25 @@ class _HikeScreenState extends State { } setPolyline() async { - // PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( - // '${localProperties[MAPS_API_KEY]}', // Google Maps API Key - // PointLatLng(route.first.latitude, route.first.longitude), - // PointLatLng(route.last.latitude, route.last.longitude), - // ); - // if (result.points.isNotEmpty) { - // result.points.forEach((PointLatLng point) { - // polylineCoordinates.add(LatLng(point.latitude, point.longitude)); - // }); - // } - // setState(() { - // Polyline polyline = Polyline( - // polylineId: PolylineId('poly'), - // color: Colors.red, - // points: polylineCoordinates, - // width: 3, - // ); - // _polylines.add(polyline); - // }); + PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( + '${FlutterConfig.get('MAPS_API_KEY')}', // Google Maps API Key + PointLatLng(route.first.latitude, route.first.longitude), + PointLatLng(route.last.latitude, route.last.longitude), + ); + if (result.points.isNotEmpty) { + result.points.forEach((PointLatLng point) { + polylineCoordinates.add(LatLng(point.latitude, point.longitude)); + }); + } + setState(() { + Polyline polyline = Polyline( + polylineId: PolylineId('poly'), + color: Colors.red, + points: polylineCoordinates, + width: 3, + ); + _polylines.add(polyline); + }); } fetchData() async { diff --git a/pubspec.lock b/pubspec.lock index ad4a3f4..0ff3a2b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -265,6 +265,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_config: + dependency: "direct main" + description: + name: flutter_config + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" flutter_duration_picker: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index cfeac61..0b99bb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,6 +34,7 @@ dependencies: overlay_support: ^1.2.1 sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 + flutter_config: ^2.0.0 flutter_duration_picker: git: https://github.com/bartektartanus/flutter_duration_picker From a4a04144ea3e60fb3492be2a96c0037484d5dc19 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Sat, 28 Aug 2021 20:11:43 +0530 Subject: [PATCH 009/122] filter out duplicate followers and duplicate beacons from your_beacon list --- lib/components/beacon_card.dart | 2 +- lib/queries/beacon.dart | 11 - lib/services/database_mutation_functions.dart | 9 +- lib/services/user_config.dart | 21 +- lib/splash_screen.dart | 44 +- lib/view_model/auth_screen_model.dart | 2 +- lib/views/hike_screen.dart | 412 +++++++++--------- 7 files changed, 249 insertions(+), 252 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index 55c8334..f1b9c71 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -27,7 +27,7 @@ class BeaconCustomWidgets { isLeader: (beacon.leader.id == userConfig.currentUser.id), )); } else { - databaseFunctions.init(); + await databaseFunctions.init(); final Beacon _beacon = await databaseFunctions.joinBeacon(beacon.shortcode); if (_beacon != null) { diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index bcfd323..0b90921 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -201,17 +201,6 @@ class BeaconQueries { } '''); - String fetchFollowerUpdates(String id) { - return ''' - subscription { - beaconJoined (id: "$id") { - _id - name - } - } - '''; - } - String createLandmark(String id, String lat, String lon, String title) { return ''' mutation{ diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index ff9eb31..0c90747 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -184,6 +184,7 @@ class DataBaseMutationFunctions { Future> fetchUserBeacons() async { List beacons = []; + Set beaconIds = {}; final QueryResult result = await clientAuth .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); if (result.hasException) { @@ -196,7 +197,12 @@ class DataBaseMutationFunctions { final User userInfo = User.fromJson( result.data['me'] as Map, ); - beacons = userInfo.beacon; + for (var i in userInfo.beacon) { + if (!beaconIds.contains(i.id)) { + beaconIds.add(i.id); + beacons.add(i); + } + } } return beacons; } @@ -251,6 +257,7 @@ class DataBaseMutationFunctions { navigationService.showSnackBar( "Something went wrong: ${result.exception.graphqlErrors.first.message}"); print("Something went wrong: ${result.exception}"); + navigationService.removeAllAndPush('/main', '/'); } else if (result.data != null && result.isConcrete) { final Beacon beacon = Beacon.fromJson( result.data['joinBeacon'] as Map, diff --git a/lib/services/user_config.dart b/lib/services/user_config.dart index d3bee16..9777b98 100644 --- a/lib/services/user_config.dart +++ b/lib/services/user_config.dart @@ -17,17 +17,18 @@ class UserConfig { return false; } bool userUpdated = true; - graphqlConfig.getToken().then((value) async { + await graphqlConfig.getToken().then((value) async { print('${userConfig._currentUser.authToken}'); - databaseFunctions.init(); - final bool fetchUpdates = await databaseFunctions.fetchCurrentUserInfo(); - if (fetchUpdates) { - saveUserInHive(); - userUpdated = true; - } else { - navigationService.showSnackBar("Couldn't update User details"); - userUpdated = false; - } + await databaseFunctions.init(); + await databaseFunctions.fetchCurrentUserInfo().then((value) { + if (value) { + saveUserInHive(); + userUpdated = true; + } else { + navigationService.showSnackBar("Couldn't update User details"); + userUpdated = false; + } + }); }); print('user updated: $userUpdated'); return userUpdated; diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart index bd85981..6a5d50a 100644 --- a/lib/splash_screen.dart +++ b/lib/splash_screen.dart @@ -44,53 +44,41 @@ class _SplashScreenState extends State { if (!mounted) return; setState(() => _initialUri = null); } - if (_latestUri == null && _initialUri == null) { - final bool userLoggedIn = await userConfig.userLoggedIn(); - Future.delayed(const Duration(milliseconds: 750)).then((value) async { - if (userLoggedIn) { + await databaseFunctions.init(); + await userConfig.userLoggedIn().then((value) async { + if (_latestUri == null && _initialUri == null) { + if (value) { navigationService.pushReplacementScreen('/main'); } else { navigationService.pushReplacementScreen('/auth'); } - }); - } else { - if (_initialUri != null) { - var shortcode = _initialUri.queryParameters['shortcode']; - final bool userLoggedIn = await userConfig.userLoggedIn(); - - Future.delayed(const Duration(milliseconds: 1200)).then((value) async { - if (userLoggedIn) { - databaseFunctions.init(); - final Beacon beacon = await databaseFunctions.joinBeacon(shortcode); - Future.delayed(const Duration(milliseconds: 750)) - .then((value) async { - if (beacon != null) { + } else { + if (_initialUri != null) { + var shortcode = _initialUri.queryParameters['shortcode']; + if (value) { + await databaseFunctions.joinBeacon(shortcode).then((val) { + if (val != null) { navigationService.pushScreen('/hikeScreen', - arguments: HikeScreen(beacon, isLeader: false)); + arguments: HikeScreen(val, isLeader: false)); } else { - navigationService.showSnackBar('SomeThing went wrong'); navigationService.pushReplacementScreen('/main'); } }); } else { // login in anonymously and join hike - databaseFunctions.init(); await databaseFunctions.signup(name: "Anonymous"); - final Beacon beacon = await databaseFunctions.joinBeacon(shortcode); - Future.delayed(const Duration(milliseconds: 750)) - .then((value) async { - if (beacon != null) { + await databaseFunctions.joinBeacon(shortcode).then((val) async { + if (value != null) { navigationService.pushScreen('/hikeScreen', - arguments: HikeScreen(beacon, isLeader: false)); + arguments: HikeScreen(val, isLeader: false)); } else { - navigationService.showSnackBar('SomeThing went wrong'); navigationService.pushReplacementScreen('/main'); } }); } - }); + } } - } + }); } @override diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 86fed6d..00896f8 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -82,7 +82,7 @@ class AuthViewModel extends BaseModel { if (formKeyLogin.currentState.validate()) { setState(ViewState.busy); validate = AutovalidateMode.disabled; - databaseFunctions.init(); + await databaseFunctions.init(); final bool loginSuccess = await databaseFunctions.login( email: loginEmailController.text, password: loginPasswordController.text); diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 6981be5..c93f12d 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -35,6 +35,7 @@ class HikeScreen extends StatefulWidget { class _HikeScreenState extends State { double screenHeight, screenWidth; Beacon beacon; + Set followerId = {}; bool isGeneratingLink = false, isReferred, isBeaconExpired = false; List hikers = []; List route = []; @@ -155,7 +156,10 @@ class _HikeScreenState extends State { ); }, duration: Duration(milliseconds: 4000)); setState(() { - hikers.add(newJoinee); + if (!followerId.contains(newJoinee.id)) { + hikers.add(newJoinee); + followerId.add(newJoinee.id); + } // markers.add(Marker( // markerId: MarkerId((markers.length + 1).toString()), // position: LatLng(double.parse(newJoinee.location.lat), @@ -232,7 +236,12 @@ class _HikeScreenState extends State { beacon = value; setState(() { hikers.add(value.leader); - hikers.addAll(value.followers); + for (var i in value.followers) { + if (!followerId.contains(i.id)) { + hikers.add(i); + followerId.add(i.id); + } + } var lat = double.parse(value.location.lat); var lon = double.parse(value.location.lon); route.add(LatLng(lat, lon)); @@ -299,219 +308,222 @@ class _HikeScreenState extends State { : WillPopScope( onWillPop: () => onWillPop(context), child: Scaffold( - body: ModalProgressHUD( - inAsyncCall: isGeneratingLink || isBusy, - child: SlidingUpPanel( - maxHeight: MediaQuery.of(context).size.height * 0.6, - minHeight: 154, - controller: _panelController, - collapsed: Container( - decoration: BoxDecoration( - color: kBlue, - borderRadius: BorderRadius.only( - topRight: Radius.circular(10), - topLeft: Radius.circular(10))), - child: Column( - children: [ - SizedBox( - height: 12.0, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 60, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all( - Radius.circular(12.0))), - ), - ], - ), - SizedBox( - height: 10, - ), - Container( - width: double.infinity, - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 15), - child: RichText( - text: TextSpan( - style: - TextStyle(fontWeight: FontWeight.bold), - children: [ - TextSpan( - text: isBeaconExpired - ? 'Beacon has been expired\n' - : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', - style: TextStyle(fontSize: 16)), - TextSpan( - text: 'Beacon holder at: $address\n', - style: TextStyle(fontSize: 14)), - TextSpan( - text: - 'Total Followers: ${hikers.length - 1} (Swipe to view the list of followers)\n', - style: TextStyle(fontSize: 12)), - TextSpan( - text: - 'Share this passkey to add user: ${widget.beacon.shortcode}\n', - style: TextStyle(fontSize: 12)), - ]), + body: SafeArea( + child: ModalProgressHUD( + inAsyncCall: isGeneratingLink || isBusy, + child: SlidingUpPanel( + maxHeight: MediaQuery.of(context).size.height * 0.6, + minHeight: 154, + controller: _panelController, + collapsed: Container( + decoration: BoxDecoration( + color: kBlue, + borderRadius: BorderRadius.only( + topRight: Radius.circular(10), + topLeft: Radius.circular(10))), + child: Column( + children: [ + SizedBox( + height: 12.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 60, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all( + Radius.circular(12.0))), + ), + ], + ), + SizedBox( + height: 10, + ), + Container( + width: double.infinity, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15), + child: RichText( + text: TextSpan( + style: TextStyle( + fontWeight: FontWeight.bold), + children: [ + TextSpan( + text: isBeaconExpired + ? 'Beacon has been expired\n' + : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', + style: TextStyle(fontSize: 16)), + TextSpan( + text: + 'Beacon holder at: $address\n', + style: TextStyle(fontSize: 14)), + TextSpan( + text: + 'Total Followers: ${hikers.length - 1} (Swipe up to view the list of followers)\n', + style: TextStyle(fontSize: 12)), + TextSpan( + text: + 'Share this passkey to add user: ${widget.beacon.shortcode}\n', + style: TextStyle(fontSize: 12)), + ]), + ), ), + height: 120, ), - height: 120, - ), - ], + ], + ), ), - ), - panel: _panel(_scrollController), - body: Stack( - alignment: Alignment.topCenter, - children: [ - GoogleMap( - compassEnabled: true, - mapType: MapType.terrain, - markers: markers.toSet(), - polylines: _polylines, - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon)), - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING), - onMapCreated: (GoogleMapController controller) { - mapController.complete(controller); - // setPolyline(); - }, - onTap: (loc) async { - String title; - showDialog( - context: context, - builder: (context) => Dialog( - child: Container( - height: 250, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Form( - key: _landmarkFormKey, - child: Column( - children: [ - Container( - height: 100, - child: Padding( - padding: - const EdgeInsets.all(4.0), - child: TextFormField( - onChanged: (key) { - title = key; - }, - validator: (value) { - if (value == null || - value.isEmpty) { - return "Please enter title for landmark"; - } else { - return null; - } - }, - decoration: InputDecoration( - alignLabelWithHint: true, - floatingLabelBehavior: - FloatingLabelBehavior - .always, - hintText: - 'Add title for the landmark', - hintStyle: TextStyle( - fontSize: 15, - color: kBlack), - labelText: 'Title', - labelStyle: TextStyle( - fontSize: 20, - color: kYellow), + panel: _panel(_scrollController), + body: Stack( + alignment: Alignment.topCenter, + children: [ + GoogleMap( + compassEnabled: true, + mapType: MapType.terrain, + markers: markers.toSet(), + polylines: _polylines, + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon)), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), + onMapCreated: (GoogleMapController controller) { + mapController.complete(controller); + // setPolyline(); + }, + onTap: (loc) async { + String title; + showDialog( + context: context, + builder: (context) => Dialog( + child: Container( + height: 250, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 32, vertical: 16), + child: Form( + key: _landmarkFormKey, + child: Column( + children: [ + Container( + height: 100, + child: Padding( + padding: + const EdgeInsets.all(4.0), + child: TextFormField( + onChanged: (key) { + title = key; + }, + validator: (value) { + if (value == null || + value.isEmpty) { + return "Please enter title for landmark"; + } else { + return null; + } + }, + decoration: InputDecoration( + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior + .always, + hintText: + 'Add title for the landmark', + hintStyle: TextStyle( + fontSize: 15, + color: kBlack), + labelText: 'Title', + labelStyle: TextStyle( + fontSize: 20, + color: kYellow), + ), ), ), + color: kLightBlue, + ), + SizedBox( + height: 30, ), - color: kLightBlue, - ), - SizedBox( - height: 30, - ), - Flexible( - child: HikeButton( - buttonWidth: 25, - text: 'Create Landmark', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () async { - if (_landmarkFormKey - .currentState - .validate()) { - navigationService.pop(); - await databaseFunctions - .init(); - await databaseFunctions - .createLandmark(title, - loc, beacon.id) - .then((value) { - setState(() { - markers.add(Marker( - markerId: MarkerId( - (markers.length + - 1) - .toString()), - position: loc, - infoWindow: - InfoWindow( - title: '$title', - ), - icon: BitmapDescriptor - .defaultMarkerWithHue( - BitmapDescriptor - .hueBlue), - )); + Flexible( + child: HikeButton( + buttonWidth: 25, + text: 'Create Landmark', + textColor: Colors.white, + buttonColor: kYellow, + onTap: () async { + if (_landmarkFormKey + .currentState + .validate()) { + navigationService.pop(); + await databaseFunctions + .init(); + await databaseFunctions + .createLandmark(title, + loc, beacon.id) + .then((value) { + setState(() { + markers.add(Marker( + markerId: MarkerId( + (markers.length + + 1) + .toString()), + position: loc, + infoWindow: + InfoWindow( + title: '$title', + ), + icon: BitmapDescriptor + .defaultMarkerWithHue( + BitmapDescriptor + .hueBlue), + )); + }); }); - }); - } - }), - ), - ], + } + }), + ), + ], + ), ), ), ), ), - ), - ); - }, - ), - CustomPaint( - size: Size(screenWidth, screenHeight), - foregroundPainter: ShapePainter(), - ), - Align( - alignment: Alignment(0.9, -0.8), - child: HikeScreenWidget.shareButton( - context, widget.beacon.shortcode)), - Align( - alignment: Alignment(-0.8, -0.8), - child: GestureDetector( - onTap: () { - onWillPop(context); + ); }, - child: Icon( - Icons.arrow_back, - size: 30, - color: Colors.white, + ), + CustomPaint( + size: Size(screenWidth, screenHeight - 200), + foregroundPainter: ShapePainter(), + ), + Align( + alignment: Alignment(0.87, -0.85), + child: HikeScreenWidget.shareButton( + context, widget.beacon.shortcode)), + Align( + alignment: Alignment(-0.8, -0.9), + child: GestureDetector( + onTap: () { + onWillPop(context); + }, + child: Icon( + Icons.arrow_back, + size: 30, + color: Colors.white, + ), ), ), - ), - ], + ], + ), + ) + // }), ), - ) - // }), - ), + ), ), ); } From 40686edbba518916015a10977f7a448dbe2b7836 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Mon, 30 Aug 2021 01:59:23 +0530 Subject: [PATCH 010/122] add endpoint url as env variable --- .env.example | 3 +++ README.md | 2 +- lib/services/graphql_config.dart | 5 +++-- 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..6f5fe14 --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +MAPS_API_KEY= +HTTP_ENDPOINT=(for example: https://beacon.aadibajpai.com/graphql) +WEBSOCKET_ENDPOINT=(for example: wss://beacon.aadibajpai.com/subscriptions) \ No newline at end of file diff --git a/README.md b/README.md index 3e654ab..3d0fd86 100755 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ For setting up the development environment, follow the steps given below. - `cd` into `beacon` - Check for flutter setup and connected devices using `flutter doctor` - Get all the dependencies using `flutter pub get` -- Create a .env file in the root folder and add `MAPS_API_KEY=your_google_maps_api_key_here` +- Create a .env file in the root folder, copy the content from .env.example and add respected key's value - Run the app using `flutter run` For help getting started with Flutter, view our diff --git a/lib/services/graphql_config.dart b/lib/services/graphql_config.dart index a19f406..8ab258b 100644 --- a/lib/services/graphql_config.dart +++ b/lib/services/graphql_config.dart @@ -1,16 +1,17 @@ import 'package:beacon/locator.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; +import 'package:flutter_config/flutter_config.dart'; class GraphQLConfig { static String token; static final HttpLink httpLink = HttpLink( - "https://beacon.aadibajpai.com/graphql", + "${FlutterConfig.get('HTTP_ENDPOINT')}", ); static final AuthLink authLink = AuthLink(getToken: () async => token); static WebSocketLink websocketLink = - WebSocketLink('wss://beacon.aadibajpai.com/subscriptions', + WebSocketLink('${FlutterConfig.get('WEBSOCKET_ENDPOINT')}', config: SocketClientConfig( autoReconnect: true, initialPayload: { From 36a0506e3278f58d373350254e4d09d7b60a6008 Mon Sep 17 00:00:00 2001 From: Literal-Eval <62198564+Literal-Eval@users.noreply.github.com> Date: Mon, 27 Dec 2021 19:31:09 +0530 Subject: [PATCH 011/122] replace duration picker and version update (#9) --- lib/components/create_join_dialog.dart | 2 +- pubspec.lock | 48 ++++++++++++++++---------- pubspec.yaml | 11 +++--- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 12c9025..86589c1 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -5,7 +5,7 @@ import 'package:beacon/components/hike_button.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_duration_picker/flutter_duration_picker.dart'; +import 'package:duration_picker/duration_picker.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class CreateJoinBeaconDialog { diff --git a/pubspec.lock b/pubspec.lock index 0ff3a2b..f4b1eb6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -14,7 +14,7 @@ packages: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "1.7.1" + version: "1.7.2" archive: dependency: transitive description: @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.6.1" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -105,14 +105,14 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.1" checked_yaml: dependency: transitive description: @@ -232,6 +232,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.5.2" + duration_picker: + dependency: "direct main" + description: + name: duration_picker + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0+1" fake_async: dependency: transitive description: @@ -272,15 +279,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" - flutter_duration_picker: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: "285ff19ad8b440fb6b8727ea849b7ce679d67c75" - url: "https://github.com/bartektartanus/flutter_duration_picker" - source: git - version: "1.0.4" flutter_launcher_icons: dependency: "direct dev" description: @@ -288,6 +286,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.9.1" + flutter_lints: + dependency: transitive + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" flutter_local_notifications: dependency: "direct main" description: @@ -536,6 +541,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.1" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" location: dependency: "direct main" description: @@ -570,14 +582,14 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10" + version: "0.12.11" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.7.0" mime: dependency: transitive description: @@ -876,7 +888,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.4.3" timezone: dependency: transitive description: @@ -932,7 +944,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" watcher: dependency: transitive description: @@ -976,5 +988,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=2.13.0 <3.0.0" + dart: ">=2.14.0 <3.0.0" flutter: ">=2.2.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0b99bb2..398c13c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,10 +1,12 @@ name: beacon description: A new Flutter project. +publish_to: "none" + version: 1.0.0+1 environment: - sdk: '>=2.7.0 <3.0.0' + sdk: ">=2.7.0 <3.0.0" dependencies: flutter: @@ -26,7 +28,7 @@ dependencies: provider: ^5.0.0 uni_links: ^0.5.1 geocoder: ^0.2.1 - share: ^2.0.4 + share: ^2.0.4 location: ^4.3.0 rxdart: ^0.26.0 flutter_polyline_points: ^1.0.0 @@ -35,8 +37,7 @@ dependencies: sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 flutter_config: ^2.0.0 - flutter_duration_picker: - git: https://github.com/bartektartanus/flutter_duration_picker + duration_picker: ^1.1.0+1 dev_dependencies: flutter_test: @@ -59,4 +60,4 @@ flutter: fonts: - family: FuturaBold fonts: - - asset: fonts/futura_bold.otf \ No newline at end of file + - asset: fonts/futura_bold.otf From 2a713b448560f086fb4afbfe032bfc6360f0c1b3 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Mon, 27 Dec 2021 19:45:35 +0530 Subject: [PATCH 012/122] rfrac: removed unused imports and migrated deprecated widgets (#14) * rfrac: removed unused imports from multiple files. * rfrac: migrated deprecated widgets. --- lib/components/beacon_card.dart | 2 -- lib/components/hike_screen_widget.dart | 1 - lib/models/beacon/beacon.dart | 2 -- lib/models/landmarks/landmark.dart | 3 --- lib/models/location/location.dart | 2 -- lib/models/user/user_info.dart | 2 -- lib/queries/auth.dart | 2 -- lib/queries/beacon.dart | 2 -- lib/router.dart | 1 - lib/services/database_mutation_functions.dart | 2 -- lib/services/validators.dart | 3 --- lib/splash_screen.dart | 1 - lib/view_model/hike_screen_model.dart | 2 -- lib/views/auth_screen.dart | 17 +++++++++++------ lib/views/home.dart | 2 +- 15 files changed, 12 insertions(+), 32 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index f1b9c71..9507594 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:beacon/locator.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/utilities/constants.dart'; diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index c382d0b..352903b 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -1,4 +1,3 @@ -import 'package:beacon/components/dialog_boxes.dart'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/utilities/constants.dart'; diff --git a/lib/models/beacon/beacon.dart b/lib/models/beacon/beacon.dart index 2575303..a2487e6 100644 --- a/lib/models/beacon/beacon.dart +++ b/lib/models/beacon/beacon.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/models/location/location.dart'; import 'package:beacon/models/user/user_info.dart'; diff --git a/lib/models/landmarks/landmark.dart b/lib/models/landmarks/landmark.dart index 53520a7..96bafb6 100644 --- a/lib/models/landmarks/landmark.dart +++ b/lib/models/landmarks/landmark.dart @@ -1,7 +1,4 @@ -import 'dart:ffi'; - import 'package:beacon/models/location/location.dart'; -import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; part 'landmark.g.dart'; diff --git a/lib/models/location/location.dart b/lib/models/location/location.dart index afc5961..db09e83 100644 --- a/lib/models/location/location.dart +++ b/lib/models/location/location.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; part 'location.g.dart'; diff --git a/lib/models/user/user_info.dart b/lib/models/user/user_info.dart index 40d3721..d583fa1 100644 --- a/lib/models/user/user_info.dart +++ b/lib/models/user/user_info.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/models/location/location.dart'; import 'package:flutter/material.dart'; diff --git a/lib/queries/auth.dart b/lib/queries/auth.dart index 1790a3c..cb159d3 100644 --- a/lib/queries/auth.dart +++ b/lib/queries/auth.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - class AuthQueries { String registerUser(String name, String email, String password) { return ''' diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index 0b90921..b052186 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -1,5 +1,3 @@ -import 'dart:ffi'; - import 'package:graphql_flutter/graphql_flutter.dart'; class BeaconQueries { diff --git a/lib/router.dart b/lib/router.dart index 8f81bd1..27fd3c0 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,4 +1,3 @@ -import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/splash_screen.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 0c90747..95aa417 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -1,11 +1,9 @@ import 'dart:async'; -import 'dart:ffi'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/models/location/location.dart'; import 'package:beacon/queries/auth.dart'; import 'package:beacon/queries/beacon.dart'; -import 'package:beacon/services/navigation_service.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; diff --git a/lib/services/validators.dart b/lib/services/validators.dart index d6749d7..bb141d8 100644 --- a/lib/services/validators.dart +++ b/lib/services/validators.dart @@ -1,6 +1,3 @@ -import 'package:flutter/cupertino.dart'; -import 'package:http/http.dart' as http; - class Validator { static String validateEmail(String email) { // If email is empty return. diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart index 6a5d50a..5a0e817 100644 --- a/lib/splash_screen.dart +++ b/lib/splash_screen.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index b402ad1..ed988e9 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -2,12 +2,10 @@ import 'dart:async'; import 'package:beacon/models/location/location.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; -import 'package:beacon/components/dialog_boxes.dart'; import 'package:beacon/enums/view_state.dart'; import 'package:share/share.dart'; import 'package:beacon/models/beacon/beacon.dart'; diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 455b7d2..9be643f 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -100,9 +100,11 @@ class _AuthScreenState extends State mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Expanded( - child: FlatButton( - splashColor: Colors.white, - highlightColor: Colors.white, + child: TextButton( + style: ButtonStyle( + overlayColor: MaterialStateProperty.all(Colors.transparent), + ), + //highlightColor: Colors.white, onPressed: model.onSignInButtonPress, child: Text( "Existing", @@ -115,9 +117,12 @@ class _AuthScreenState extends State ), //Container(height: 33.0, width: 1.0, color: Colors.white), Expanded( - child: FlatButton( - splashColor: Colors.transparent, - highlightColor: Colors.transparent, + child: TextButton( + style: ButtonStyle( + overlayColor: MaterialStateProperty.all(Colors.transparent), + ), + //splashColor: Colors.transparent, + //highlightColor: Colors.transparent, onPressed: model.onSignUpButtonPress, child: Text( "New", diff --git a/lib/views/home.dart b/lib/views/home.dart index 74039c8..c3f9a9b 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -1,6 +1,6 @@ import 'package:beacon/components/beacon_card.dart'; import 'package:beacon/components/create_join_dialog.dart'; -import 'package:beacon/components/dialog_boxes.dart'; + import 'package:beacon/components/hike_button.dart'; import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/locator.dart'; From 1d22285310fc16af4ac1b34dc098b67f95a2fa97 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Mon, 27 Dec 2021 23:26:44 +0530 Subject: [PATCH 013/122] fix: Misaligned button on dialogue boxes using sizer (#18) * fix: fixed the alignment of buttons on the dialogue box when user terminates a hike. * fix: used sizer to fix #16 --- lib/components/create_join_dialog.dart | 1 + lib/components/dialog_boxes.dart | 10 ++++++---- lib/main.dart | 17 ++++++++++------- lib/views/home.dart | 11 +++++++---- pubspec.lock | 15 +++++++++++++++ pubspec.yaml | 2 ++ 6 files changed, 41 insertions(+), 15 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 86589c1..9415ca8 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -4,6 +4,7 @@ import 'package:beacon/services/validators.dart'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; +import 'package:duration_picker/duration_picker.dart'; import 'package:flutter/material.dart'; import 'package:duration_picker/duration_picker.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; diff --git a/lib/components/dialog_boxes.dart b/lib/components/dialog_boxes.dart index febf33b..b0b7a45 100644 --- a/lib/components/dialog_boxes.dart +++ b/lib/components/dialog_boxes.dart @@ -2,6 +2,7 @@ import 'package:beacon/components/hike_button.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:flutter/material.dart'; +import 'package:sizer/sizer.dart'; class DialogBoxes { static AlertDialog showExitDialog( @@ -17,16 +18,17 @@ class DialogBoxes { : 'Are you sure you want to terminate the hike?', style: TextStyle(fontSize: 16, color: kBlack), ), + actionsAlignment: MainAxisAlignment.spaceEvenly, actions: [ HikeButton( - buttonHeight: 20, - buttonWidth: 40, + buttonHeight: 2.5.h, + buttonWidth: 8.w, onTap: () => Navigator.of(context).pop(false), text: 'No', ), HikeButton( - buttonHeight: 20, - buttonWidth: 40, + buttonHeight: 2.5.h, + buttonWidth: 8.w, onTap: () { navigationService.removeAllAndPush('/main', '/'); }, diff --git a/lib/main.dart b/lib/main.dart index ae21701..c0b97e2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,6 +11,7 @@ import 'package:flutter_config/flutter_config.dart'; import 'package:hive/hive.dart'; import 'package:overlay_support/overlay_support.dart'; import 'package:path_provider/path_provider.dart' as path_provider; +import 'package:sizer/sizer.dart'; import 'models/user/user_info.dart'; void main() async { @@ -32,13 +33,15 @@ void main() async { await Hive.openBox('beacons'); setupLocator(); runApp(OverlaySupport( - child: MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Beacon', - navigatorKey: navigationService.navigatorKey, - theme: ThemeData(fontFamily: 'FuturaBold'), - initialRoute: '/', - onGenerateRoute: router.generateRoute, + child: Sizer( + builder: (context, orientation, deviceType) => MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Beacon', + navigatorKey: navigationService.navigatorKey, + theme: ThemeData(fontFamily: 'FuturaBold'), + initialRoute: '/', + onGenerateRoute: router.generateRoute, + ), ), )); } diff --git a/lib/views/home.dart b/lib/views/home.dart index c3f9a9b..7fee59c 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -10,6 +10,7 @@ import 'package:beacon/view_model/home_view_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; import 'package:modal_progress_hud/modal_progress_hud.dart'; +import 'package:sizer/sizer.dart'; class MainScreen extends StatefulWidget { const MainScreen({Key key}) : super(key: key); @@ -43,6 +44,8 @@ class _MainScreenState extends State with TickerProviderStateMixin { onPressed: () => showDialog( context: context, builder: (context) => AlertDialog( + actionsAlignment: + MainAxisAlignment.spaceEvenly, title: Text( (userConfig.currentUser.isGuest) ? 'Create Account' @@ -59,15 +62,15 @@ class _MainScreenState extends State with TickerProviderStateMixin { ), actions: [ HikeButton( - buttonHeight: 20, - buttonWidth: 40, + buttonHeight: 2.5.h, + buttonWidth: 8.w, onTap: () => Navigator.of(context).pop(false), text: 'No', ), HikeButton( - buttonHeight: 20, - buttonWidth: 40, + buttonHeight: 2.5.h, + buttonWidth: 8.w, onTap: () { navigationService.pop(); model.logout(); diff --git a/pubspec.lock b/pubspec.lock index f4b1eb6..e2d58d2 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -36,6 +36,7 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.8.2" + boolean_selector: dependency: transitive description: @@ -807,6 +808,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + sizer: + dependency: "direct main" + description: + name: sizer + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" skeleton_text: dependency: "direct main" description: @@ -931,6 +939,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.0" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" uuid: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 398c13c..3f7ac2e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 flutter_config: ^2.0.0 + sizer: ^2.0.15 duration_picker: ^1.1.0+1 dev_dependencies: @@ -45,6 +46,7 @@ dev_dependencies: hive_generator: ^1.1.0 build_runner: ^2.0.4 flutter_launcher_icons: "^0.9.1" + flutter_icons: android: "launcher_icon" From f3dee752fb0d5c948586aaae6c2632ceca308f44 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Tue, 28 Dec 2021 13:28:41 +0530 Subject: [PATCH 014/122] Disabled Change Duration Popup, since we dont have the required mutation on backend. (#36) --- lib/views/hike_screen.dart | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index c93f12d..ad61d78 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -566,10 +566,12 @@ class _HikeScreenState extends State { text: 'Long Press on any hiker to hand over the beacon\n', style: TextStyle(fontSize: 16)), - TextSpan( - text: - 'Double tap on beacon to change the duration\n', - style: TextStyle(fontSize: 14)), + //TODO: enable this once backend has updated. + //Commented, since we dont have the neccessary mutation atm on backend to change the duration. + // TextSpan( + // text: + // 'Double tap on beacon to change the duration\n', + // style: TextStyle(fontSize: 14)), ]), ), ) @@ -616,7 +618,10 @@ class _HikeScreenState extends State { ? Fluttertoast.showToast( msg: 'Only beacon holder has access to change the duration') - : DialogBoxes.changeDurationDialog(context); + //TODO: enable this once backend has updated. + //Commented, since we dont have the neccessary mutation atm on backend to change the duration. + // : DialogBoxes.changeDurationDialog(context); + : Container(); }, child: Icon( Icons.room, From d193bf65af0fea251cfe4cdbd6bbbbef59cd844a Mon Sep 17 00:00:00 2001 From: Devansh Mishra <79010144+devansh12b2@users.noreply.github.com> Date: Tue, 28 Dec 2021 14:12:40 +0530 Subject: [PATCH 015/122] added github CI actions (#28) * added github ci actions * Added Flutter CI check badge in README.md Co-authored-by: Nishtha Bodani --- .github/workflows/flutter-ci.yml | 49 ++++++++++++++++++++++++++++++++ README.md | 11 +++---- 2 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/flutter-ci.yml diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml new file mode 100644 index 0000000..93e0217 --- /dev/null +++ b/.github/workflows/flutter-ci.yml @@ -0,0 +1,49 @@ +name: Flutter CI + +on: + push: + branches: [master, development] + pull_request: + branches: [master, development] + +jobs: + test: + strategy: + matrix: + platform: [windows-latest, ubuntu-latest, macos-latest] + runs-on: ${{matrix.platform}} + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-java@v1 + with: + java-version: "12.x" + - uses: subosito/flutter-action@v1 + with: + flutter-version: '2.5.0' + - run: flutter pub get + - run: flutter format --set-exit-if-changed . + - run: flutter analyze . + # - run: flutter test + + build: + strategy: + matrix: + platform: [windows-latest, macos-latest, ubuntu-latest] + runs-on: ${{matrix.platform}} + steps: + - uses: actions/checkout@v1 + - uses: actions/setup-java@v1 + with: + java-version: "12.x" + - uses: subosito/flutter-action@v1 + with: + flutter-version: '2.5.0' + - run: flutter pub get + - run: flutter format --set-exit-if-changed . + - run: flutter analyze . + # - run: flutter test + # - run: flutter build apk + # - uses: actions/upload-artifact@v1 + # with: + # name: release-apk + # path: build/app/outputs/apk/release/app-release.apk diff --git a/README.md b/README.md index 3d0fd86..dadaa74 100755 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # Beacon +[![CI](https://github.com/devansh12b2/beacon/actions/workflows/flutter-ci.yml/badge.svg)](https://github.com/devansh12b2/beacon/actions/workflows/flutter-ci.yml/) ## About the Project -This project is a flutter build native interface to ease the group travelling (or hiking). By using this, the group leader would be able to share his location with the entire crew, and in case if someone loses contact with the group, he can quickly get in the right place by following the beacon. +This project is a flutter build native interface to ease the group travelling (or hiking). By using this, the group leader would be able to share his location with the entire crew, and in case if someone loses contact with the group, he can quickly get in the right place by following the beacon. ## Getting Started @@ -28,7 +29,7 @@ beacon/lib/ ├── components/ # Shared Components such as dialog boxes, button, and other shared widgets ├── enums/ # enum files | └── view_state.dart # defines view states i.e Idle, Busy, Error -├── models/ # model classes: beacon, location, landmark, user +├── models/ # model classes: beacon, location, landmark, user ├── queries/ # includes all graphql query strings ├── services/ # services | ├── database_mutation_function.dart/ # Graphql Queries implementations @@ -36,7 +37,7 @@ beacon/lib/ | └── ... # all config files ├── utilities/ # Utilities that includes constants file ├── views/ # Views/UI layer -| ├── auth_screen.dart +| ├── auth_screen.dart | ├── base_view.dart | ├── hike_screen.dart | ├── home.dart @@ -51,7 +52,7 @@ beacon/lib/ -## Contributing +## Contributing Whether you have some feauture requests/ideas, code improvements, refactoring, performance improvements, help is always Welcome. The more is done, better it gets. @@ -63,4 +64,4 @@ If you found any bugs, consider opening an [issue](https://github.com/CCExtracto We would love to hear from you! You may join gsoc-beacon channel of CCExtractor community through slack: -[![Slack](https://img.shields.io/badge/chat-on_slack-purple.svg?style=for-the-badge&logo=slack)](https://ccextractor.org/public/general/support/) \ No newline at end of file +[![Slack](https://img.shields.io/badge/chat-on_slack-purple.svg?style=for-the-badge&logo=slack)](https://ccextractor.org/public/general/support/) From 029199b2459f64f048212af83aa9540687d7bc1a Mon Sep 17 00:00:00 2001 From: nb9960 Date: Tue, 28 Dec 2021 14:21:04 +0530 Subject: [PATCH 016/122] add a basic test --- .github/workflows/flutter-ci.yml | 4 ++-- pubspec.lock | 1 - test/widget_test.dart | 7 +++++++ 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 test/widget_test.dart diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 93e0217..7364e01 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -23,7 +23,7 @@ jobs: - run: flutter pub get - run: flutter format --set-exit-if-changed . - run: flutter analyze . - # - run: flutter test + - run: flutter test build: strategy: @@ -41,7 +41,7 @@ jobs: - run: flutter pub get - run: flutter format --set-exit-if-changed . - run: flutter analyze . - # - run: flutter test + - run: flutter test # - run: flutter build apk # - uses: actions/upload-artifact@v1 # with: diff --git a/pubspec.lock b/pubspec.lock index e2d58d2..eb6cc13 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -36,7 +36,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.8.2" - boolean_selector: dependency: transitive description: diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..90a1f50 --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,7 @@ +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Empty test', (WidgetTester tester) async { + // Build our app and trigger a frame. + }); +} From c0f6a31c94da5daec007aff044c1a5852c9300ac Mon Sep 17 00:00:00 2001 From: nb9960 Date: Tue, 28 Dec 2021 14:27:25 +0530 Subject: [PATCH 017/122] update badge link in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dadaa74..9802dac 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Beacon -[![CI](https://github.com/devansh12b2/beacon/actions/workflows/flutter-ci.yml/badge.svg)](https://github.com/devansh12b2/beacon/actions/workflows/flutter-ci.yml/) +[![Flutter CI](https://github.com/CCExtractor/beacon/actions/workflows/flutter-ci.yml/badge.svg)](https://github.com/CCExtractor/beacon/actions/workflows/flutter-ci.yml) ## About the Project From 7ae93028caa656171df616ed05cf496bf1270c81 Mon Sep 17 00:00:00 2001 From: nb9960 Date: Tue, 28 Dec 2021 14:28:34 +0530 Subject: [PATCH 018/122] replace master with main in github actions --- .github/workflows/flutter-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 7364e01..efa8c7e 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -2,9 +2,9 @@ name: Flutter CI on: push: - branches: [master, development] + branches: [main, development] pull_request: - branches: [master, development] + branches: [main, development] jobs: test: From e4ee296e3aa07fd5e9c6ad9f9b42b2dbd66f49c7 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Tue, 28 Dec 2021 18:17:24 +0530 Subject: [PATCH 019/122] rfrac: removed errors which caused flutter analyze to fail. (#42) --- lib/components/create_join_dialog.dart | 1 - lib/services/database_mutation_functions.dart | 3 ++- lib/services/shared_preference_service.dart | 4 ++-- lib/services/user_config.dart | 1 - lib/view_model/auth_screen_model.dart | 4 ++-- lib/view_model/hike_screen_model.dart | 12 ++++++------ lib/view_model/home_view_model.dart | 3 ++- lib/views/auth_screen.dart | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 9415ca8..162636d 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -6,7 +6,6 @@ import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; import 'package:duration_picker/duration_picker.dart'; import 'package:flutter/material.dart'; -import 'package:duration_picker/duration_picker.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class CreateJoinBeaconDialog { diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 95aa417..d372813 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -96,7 +96,8 @@ class DataBaseMutationFunctions { : await clientNonAuth.mutate( MutationOptions(document: gql(_authQuery.loginAsGuest(name)))); if (result.hasException) { - final bool exception = encounteredExceptionOrError(result.exception); + //commenting this since value of exception wasnt used. + //final bool exception = encounteredExceptionOrError(result.exception); debugPrint('${result.exception.graphqlErrors}'); return false; } else if (result.data != null && result.isConcrete) { diff --git a/lib/services/shared_preference_service.dart b/lib/services/shared_preference_service.dart index 53431a3..47e81ce 100644 --- a/lib/services/shared_preference_service.dart +++ b/lib/services/shared_preference_service.dart @@ -6,7 +6,7 @@ class SharedPreferenceService { Future getSharedPreferencesInstance() async { _prefs = await SharedPreferences.getInstance().catchError((e) { print("shared preferences error : $e"); - return false; + //return false; }); return true; } @@ -22,4 +22,4 @@ class SharedPreferenceService { Future get token async => _prefs.getString('token'); } -SharedPreferenceService sharedPreferenceService = SharedPreferenceService(); \ No newline at end of file +SharedPreferenceService sharedPreferenceService = SharedPreferenceService(); diff --git a/lib/services/user_config.dart b/lib/services/user_config.dart index 9777b98..79d7937 100644 --- a/lib/services/user_config.dart +++ b/lib/services/user_config.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; -import 'package:beacon/models/user/user_info.dart'; import '../locator.dart'; class UserConfig { diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 00896f8..9ba5d2b 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -36,7 +36,7 @@ class AuthViewModel extends BaseModel { Color leftBg = kLightBlue; Color rightBg = kBlue; - next_signup() async { + nextSignup() async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); validate = AutovalidateMode.always; if (formKeySignup.currentState.validate()) { @@ -76,7 +76,7 @@ class AuthViewModel extends BaseModel { setState(ViewState.idle); } - next_login() async { + nextLogin() async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); validate = AutovalidateMode.always; if (formKeyLogin.currentState.validate()) { diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index ed988e9..8e650b2 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:beacon/models/location/location.dart'; -import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -33,11 +32,12 @@ class HikeScreenViewModel extends BaseModel { } Future onWillPop(context) async { - return (await showDialog( - context: context, - // builder: (context) => DialogBoxes.showExitDialog(context), - )) ?? - false; + // return (await showDialog( + // context: context, + // // builder: (context) => DialogBoxes.showExitDialog(context), + // )) ?? + // false; + return false; } void initialise(Beacon beaconParsed) async { diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 8a5e734..9338820 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -12,7 +12,8 @@ class HomeViewModel extends BaseModel { AutovalidateMode validate = AutovalidateMode.onUserInteraction; bool isCreatingHike = false; String title; - TextEditingController _titleController = new TextEditingController(); + //commenting out since its value isnt used anywhere. + //TextEditingController _titleController = new TextEditingController(); TextEditingController durationController = new TextEditingController(); String enteredPasskey = ''; diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 9be643f..3288491 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -228,7 +228,7 @@ class _AuthScreenState extends State height: 20, ), HikeButton( - onTap: model.next_login, + onTap: model.nextLogin, text: 'LOGIN', buttonWidth: 90, buttonHeight: 15, @@ -371,7 +371,7 @@ class _AuthScreenState extends State borderRadius: BorderRadius.all(Radius.circular(5.0)), ), child: HikeButton( - onTap: () => model.next_signup(), + onTap: () => model.nextSignup(), text: 'SIGNIN', buttonHeight: 18, buttonWidth: 55, From d9455a0ddc592c9fa3fcc47e532226919856962f Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Tue, 28 Dec 2021 18:59:30 +0530 Subject: [PATCH 020/122] fix: Overflow issue on homscreen (#19) * fixes #15 * fix: used sizer to fix overflow issue on homescreen. * rfrac: used pub dependency instead of git. --- lib/main.dart | 2 +- lib/views/home.dart | 61 ++++++++++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 27 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index c0b97e2..f5a3c39 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -9,9 +9,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_config/flutter_config.dart'; import 'package:hive/hive.dart'; +import 'package:sizer/sizer.dart'; import 'package:overlay_support/overlay_support.dart'; import 'package:path_provider/path_provider.dart' as path_provider; -import 'package:sizer/sizer.dart'; import 'models/user/user_info.dart'; void main() async { diff --git a/lib/views/home.dart b/lib/views/home.dart index 7fee59c..14d34bb 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -86,39 +86,48 @@ class _MainScreenState extends State with TickerProviderStateMixin { ), ), Padding( - padding: EdgeInsets.fromLTRB(8, 185, 8, 5), + padding: EdgeInsets.fromLTRB(4.w, 185, 4.w, 5), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.center, children: [ - HikeButton( - text: 'Create Hike', - textColor: Colors.white, - borderColor: Colors.white, - buttonColor: kYellow, - buttonWidth: 12, - onTap: () { - if (userConfig.currentUser.isGuest) { - navigationService.showSnackBar( - 'You need to login with credentials to start a hike'); - } else { - CreateJoinBeaconDialog.createHikeDialog( + Container( + width: 45.w, + child: HikeButton( + buttonWidth: 0.h, + text: 'Create Hike', + textColor: Colors.white, + borderColor: Colors.white, + buttonColor: kYellow, + onTap: () { + if (userConfig.currentUser.isGuest) { + navigationService.showSnackBar( + 'You need to login with credentials to start a hike'); + } else { + CreateJoinBeaconDialog.createHikeDialog( + context, model); + } + }, + ), + ), + SizedBox( + width: 2.w, + ), + Container( + width: 45.w, + child: HikeButton( + buttonWidth: 0.h, + text: 'Join a Hike', + textColor: kYellow, + borderColor: kYellow, + buttonColor: Colors.white, + onTap: () async { + CreateJoinBeaconDialog.joinBeaconDialog( context, model); - } - }, + }, + ), ), - HikeButton( - text: 'Join a Hike', - textColor: kYellow, - borderColor: kYellow, - buttonColor: Colors.white, - buttonWidth: 12, - onTap: () async { - CreateJoinBeaconDialog.joinBeaconDialog( - context, model); - }, - ) ], ), ), From c5a18e61e45ad503cce6bb6880b49d2f1a3b6ef9 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 28 Dec 2021 20:45:12 +0530 Subject: [PATCH 021/122] Updated Files and Dependencies (#24) * auto updated files * updated dependencies * iOS auto-updated files --- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Podfile | 41 +++++++ ios/Podfile.lock | 107 ++++++++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 107 +++++++++++++++++- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../contents.xcworkspacedata | 3 + 8 files changed, 256 insertions(+), 8 deletions(-) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 9367d48..8d4492f 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index 592ceee..ec97fc6 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index 592ceee..c4855bf 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..1e8c3c9 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '9.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000..da15a5c --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,107 @@ +PODS: + - connectivity_plus (0.0.1): + - Flutter + - Reachability + - Flutter (1.0.0) + - flutter_config (0.0.1): + - Flutter + - flutter_local_notifications (0.0.1): + - Flutter + - fluttertoast (0.0.2): + - Flutter + - Toast + - geocoder (0.0.1): + - Flutter + - geolocator (6.2.0): + - Flutter + - google_maps_flutter (0.0.1): + - Flutter + - GoogleMaps + - GoogleMaps (4.1.0): + - GoogleMaps/Maps (= 4.1.0) + - GoogleMaps/Base (4.1.0) + - GoogleMaps/Maps (4.1.0): + - GoogleMaps/Base + - location (0.0.1): + - Flutter + - path_provider (0.0.1): + - Flutter + - Reachability (3.2) + - share (0.0.1): + - Flutter + - shared_preferences (0.0.1): + - Flutter + - Toast (4.0.0) + - uni_links (0.0.1): + - Flutter + +DEPENDENCIES: + - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) + - Flutter (from `Flutter`) + - flutter_config (from `.symlinks/plugins/flutter_config/ios`) + - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - geocoder (from `.symlinks/plugins/geocoder/ios`) + - geolocator (from `.symlinks/plugins/geolocator/ios`) + - google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`) + - location (from `.symlinks/plugins/location/ios`) + - path_provider (from `.symlinks/plugins/path_provider/ios`) + - share (from `.symlinks/plugins/share/ios`) + - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + - uni_links (from `.symlinks/plugins/uni_links/ios`) + +SPEC REPOS: + trunk: + - GoogleMaps + - Reachability + - Toast + +EXTERNAL SOURCES: + connectivity_plus: + :path: ".symlinks/plugins/connectivity_plus/ios" + Flutter: + :path: Flutter + flutter_config: + :path: ".symlinks/plugins/flutter_config/ios" + flutter_local_notifications: + :path: ".symlinks/plugins/flutter_local_notifications/ios" + fluttertoast: + :path: ".symlinks/plugins/fluttertoast/ios" + geocoder: + :path: ".symlinks/plugins/geocoder/ios" + geolocator: + :path: ".symlinks/plugins/geolocator/ios" + google_maps_flutter: + :path: ".symlinks/plugins/google_maps_flutter/ios" + location: + :path: ".symlinks/plugins/location/ios" + path_provider: + :path: ".symlinks/plugins/path_provider/ios" + share: + :path: ".symlinks/plugins/share/ios" + shared_preferences: + :path: ".symlinks/plugins/shared_preferences/ios" + uni_links: + :path: ".symlinks/plugins/uni_links/ios" + +SPEC CHECKSUMS: + connectivity_plus: 5f0eb61093bec56935f21a1699dd2758bc895587 + Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + flutter_config: 2226c1df19c78fe34a05eb7f1363445f18e76fc1 + flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 + fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58 + geocoder: 3cfab70531a0b367e917bafe82df4c30f6d4c45a + geolocator: f5e3de65e241caba7ce3e8a618803387bda73384 + google_maps_flutter: df4e7de95264aa0a2f11aac0fc7e313acb8ffc7e + GoogleMaps: 008e2c80e38605b56b560e8deb73d4194ff30bef + location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740 + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 + share: 0b2c3e82132f5888bccca3351c504d0003b3b410 + shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 + uni_links: d97da20c7701486ba192624d99bffaaffcfc298a + +PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c + +COCOAPODS: 1.11.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index d7b80c9..b50e351 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,10 +3,11 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ + 1349DDD394F8B9121047E3AB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A2C007CD47EB9021F4E926F /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; @@ -29,11 +30,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 038A92027DADC4EF9EBE927B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78DB3DCCFD7099F03F9B4EAF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -42,6 +45,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9A2C007CD47EB9021F4E926F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CE30273B859892FC6E2E900E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -49,12 +54,32 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1349DDD394F8B9121047E3AB /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 30DF07BA73E75D70B602401E /* Pods */ = { + isa = PBXGroup; + children = ( + 78DB3DCCFD7099F03F9B4EAF /* Pods-Runner.debug.xcconfig */, + CE30273B859892FC6E2E900E /* Pods-Runner.release.xcconfig */, + 038A92027DADC4EF9EBE927B /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 888D013527335CE2AB1C5009 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9A2C007CD47EB9021F4E926F /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -72,6 +97,8 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, + 30DF07BA73E75D70B602401E /* Pods */, + 888D013527335CE2AB1C5009 /* Frameworks */, ); sourceTree = ""; }; @@ -105,12 +132,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( + 3A08507AD20C04E82854BAC1 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 5E3CB5F5DA464959BB57EDC1 /* [CP] Embed Pods Frameworks */, + 514063E86C8A8173E0053EFC /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -127,7 +157,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -169,6 +199,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 3A08507AD20C04E82854BAC1 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -183,6 +235,40 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; + 514063E86C8A8173E0053EFC /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 5E3CB5F5DA464959BB57EDC1 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -290,7 +376,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.example.beacon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -414,7 +503,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.example.beacon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -433,7 +525,10 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.example.beacon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -468,4 +563,4 @@ /* End XCConfigurationList section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; -} \ No newline at end of file +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140c..3db53b6 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + + From 134503254834755c97f3cbd1392d689555c3bb3d Mon Sep 17 00:00:00 2001 From: Devansh Mishra <79010144+devansh12b2@users.noreply.github.com> Date: Wed, 29 Dec 2021 19:32:42 +0530 Subject: [PATCH 022/122] fix: dispay error if duration is 0:00:00 (#43) * added github ci actions * required changes * Update README.md * Update README.md * Update README.md * Update README.md * Update shared_preference_service.dart * Now if duration is 0:00:00 it will show error * unused imports removed Co-authored-by: Nishtha Bodani --- lib/components/create_join_dialog.dart | 10 +++++----- lib/router.dart | 1 - lib/services/navigation_service.dart | 1 - lib/services/validators.dart | 7 +++++++ lib/views/auth_screen.dart | 1 - lib/views/hike_screen.dart | 1 - 6 files changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 162636d..d16af02 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -76,13 +76,13 @@ class CreateJoinBeaconDialog { .toString() .substring(0, 8); }, - validator: (value) { - if (value.startsWith("0:00:00")) - return "Enter valid duration"; - return null; - }, + validator: (value) => + Validator.validateDuration( + value.toString()), decoration: InputDecoration( alignLabelWithHint: true, + errorStyle: + TextStyle(color: Colors.red[800]), floatingLabelBehavior: FloatingLabelBehavior.always, labelText: 'Duration', diff --git a/lib/router.dart b/lib/router.dart index 27fd3c0..29f9736 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,5 +1,4 @@ import 'package:beacon/splash_screen.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/views/auth_screen.dart'; diff --git a/lib/services/navigation_service.dart b/lib/services/navigation_service.dart index 938b793..f0400af 100644 --- a/lib/services/navigation_service.dart +++ b/lib/services/navigation_service.dart @@ -1,4 +1,3 @@ -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class NavigationService { diff --git a/lib/services/validators.dart b/lib/services/validators.dart index bb141d8..253e86f 100644 --- a/lib/services/validators.dart +++ b/lib/services/validators.dart @@ -55,4 +55,11 @@ class Validator { } return null; } + + static String validateDuration(String duration) { + if (duration.startsWith("0:00:00.")) { + return "Duration cannot be $duration"; + } + return null; + } } diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 3288491..a7d529b 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -5,7 +5,6 @@ import 'package:beacon/utilities/indication_painter.dart'; import 'package:beacon/view_model/auth_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; class AuthScreen extends StatefulWidget { const AuthScreen({Key key}) : super(key: key); diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index ad61d78..6f4962f 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/queries/beacon.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter/material.dart'; import 'package:flutter_config/flutter_config.dart'; import 'package:fluttertoast/fluttertoast.dart'; From 81788d70bdc0cf95735d65fbe354c8f77941d3b8 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Wed, 29 Dec 2021 19:52:06 +0530 Subject: [PATCH 023/122] fix: keyboard focus and validation issues in auth screen (#30) * fix: fixed the keyboard stays open bug. * fix: Validate only those textfields that are visible. --- lib/view_model/auth_screen_model.dart | 32 +++++++++++++++++++-------- lib/views/auth_screen.dart | 18 +++++++++++++-- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 9ba5d2b..4fec5fd 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -8,7 +8,8 @@ class AuthViewModel extends BaseModel { final formKeySignup = GlobalKey(); final formKeyLogin = GlobalKey(); - AutovalidateMode validate = AutovalidateMode.disabled; + AutovalidateMode loginValidate = AutovalidateMode.disabled; + AutovalidateMode signupValidate = AutovalidateMode.disabled; final GlobalKey scaffoldKey = new GlobalKey(); final FocusNode emailLogin = FocusNode(); @@ -38,10 +39,10 @@ class AuthViewModel extends BaseModel { nextSignup() async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); - validate = AutovalidateMode.always; + signupValidate = AutovalidateMode.always; if (formKeySignup.currentState.validate()) { setState(ViewState.busy); - validate = AutovalidateMode.disabled; + signupValidate = AutovalidateMode.disabled; databaseFunctions.init(); final bool signUpSuccess = await databaseFunctions.signup( name: signupNameController.text ?? "Anonymous", @@ -78,10 +79,10 @@ class AuthViewModel extends BaseModel { nextLogin() async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); - validate = AutovalidateMode.always; + loginValidate = AutovalidateMode.always; if (formKeyLogin.currentState.validate()) { setState(ViewState.busy); - validate = AutovalidateMode.disabled; + loginValidate = AutovalidateMode.disabled; await databaseFunctions.init(); final bool loginSuccess = await databaseFunctions.login( email: loginEmailController.text, @@ -99,14 +100,27 @@ class AuthViewModel extends BaseModel { } } + void requestFocusForFocusNode(FocusNode focusNode) { + FocusScope.of(navigationService.navigatorKey.currentContext) + .requestFocus(focusNode); + } + void onSignInButtonPress() { - pageController.animateToPage(0, - duration: Duration(milliseconds: 500), curve: Curves.decelerate); + pageController + .animateToPage(0, + duration: Duration(milliseconds: 500), curve: Curves.decelerate) + .then((value) { + requestFocusForFocusNode(emailLogin); + }); } void onSignUpButtonPress() { - pageController?.animateToPage(1, - duration: Duration(milliseconds: 500), curve: Curves.decelerate); + pageController + .animateToPage(1, + duration: Duration(milliseconds: 500), curve: Curves.decelerate) + .then((value) { + requestFocusForFocusNode(name); + }); } displayPasswordLogin() { diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index a7d529b..e2e0a7f 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -56,11 +56,20 @@ class _AuthScreenState extends State model.right = Colors.black; model.left = Colors.white; }); + Future.delayed(Duration(milliseconds: 500), + () { + model.requestFocusForFocusNode( + model.emailLogin); + }); } else if (i == 1) { setState(() { model.right = Colors.white; model.left = Colors.black; }); + Future.delayed(Duration(milliseconds: 500), + () { + model.requestFocusForFocusNode(model.name); + }); } }, children: [ @@ -154,7 +163,7 @@ class _AuthScreenState extends State ), child: Form( key: model.formKeyLogin, - autovalidateMode: model.validate, + autovalidateMode: model.loginValidate, child: Container( // width: MediaQuery.of(context).size.width - 35, // height: MediaQuery.of(context).size.height / 4.3, @@ -164,6 +173,7 @@ class _AuthScreenState extends State padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20), child: TextFormField( + autovalidateMode: model.loginValidate, focusNode: model.emailLogin, controller: model.loginEmailController, validator: (value) => Validator.validateEmail(value), @@ -190,6 +200,7 @@ class _AuthScreenState extends State padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20), child: TextFormField( + autovalidateMode: model.loginValidate, focusNode: model.passwordLogin, controller: model.loginPasswordController, obscureText: model.obscureTextLogin, @@ -269,7 +280,7 @@ class _AuthScreenState extends State ), child: Form( key: model.formKeySignup, - autovalidateMode: model.validate, + autovalidateMode: model.signupValidate, child: Container( width: MediaQuery.of(context).size.width - 70, // height: 280.0, @@ -278,6 +289,7 @@ class _AuthScreenState extends State padding: EdgeInsets.symmetric(horizontal: 13, vertical: 20), child: TextFormField( + autovalidateMode: model.signupValidate, focusNode: model.name, textInputAction: TextInputAction.next, controller: model.signupNameController, @@ -304,6 +316,7 @@ class _AuthScreenState extends State padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20), child: TextFormField( + autovalidateMode: model.signupValidate, validator: (value) => Validator.validateEmail(value), focusNode: model.email, textInputAction: TextInputAction.next, @@ -330,6 +343,7 @@ class _AuthScreenState extends State padding: EdgeInsets.symmetric(horizontal: 10, vertical: 20), child: TextFormField( + autovalidateMode: model.signupValidate, focusNode: model.password, textInputAction: TextInputAction.done, validator: (value) => From 1421f5cf6332c2a5e1d06350eddf641632173512 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Thu, 30 Dec 2021 14:15:13 +0530 Subject: [PATCH 024/122] Expired beacons fix. (#33) * Expired Duration Fix: Part 1. Show expired beacons at the very last in your beacons section + No streams should be running (including the one that tracks location) Tried to implement this. * Cancelling StreamSubs if beacon expires when subs are active. * minor miss: setting isBeaconExpired to true. * Upd: Showing snackBar if user tries to join an expired beacon. * fix: Updated setting up subscriptions logic. * fix: setting state so that UI updates if beacon expires. * FIX: Close the circular loading spinner if there was some error in joining any beacon. * Update lib/views/hike_screen.dart * fix: Change the msg to terminate hike if beacon has expired. Co-authored-by: Nishtha Bodani --- lib/components/beacon_card.dart | 3 +- lib/components/dialog_boxes.dart | 10 +++-- lib/services/database_mutation_functions.dart | 17 +++++++- lib/view_model/home_view_model.dart | 4 +- lib/views/hike_screen.dart | 42 +++++++++++++------ 5 files changed, 56 insertions(+), 20 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index 9507594..fe671e6 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -31,9 +31,8 @@ class BeaconCustomWidgets { if (_beacon != null) { navigationService.pushScreen('/hikeScreen', arguments: HikeScreen(beacon, isLeader: false)); - } else { - navigationService.showSnackBar('Something went wrong'); } + //Snackbar is displayed by joinBeacon itself on any error or trying to join expired beacon. } }, child: Container( diff --git a/lib/components/dialog_boxes.dart b/lib/components/dialog_boxes.dart index b0b7a45..44cc7bf 100644 --- a/lib/components/dialog_boxes.dart +++ b/lib/components/dialog_boxes.dart @@ -6,16 +6,18 @@ import 'package:sizer/sizer.dart'; class DialogBoxes { static AlertDialog showExitDialog( - BuildContext context, bool isLeader, int X) { + BuildContext context, bool isLeader, int X, bool isBeaconExpired) { return AlertDialog( title: Text( 'This will terminate the hike, Confirm?', style: TextStyle(fontSize: 25, color: kYellow), ), content: Text( - isLeader && (X - 1 > 0) - ? 'There are ${X - 1} followers and you are carrying the beacon. Do you want to terminate the hike?' - : 'Are you sure you want to terminate the hike?', + isBeaconExpired + ? 'Are you sure you want to exit?' + : isLeader && (X - 1 > 0) + ? 'There are ${X - 1} followers and you are carrying the beacon. Do you want to terminate the hike?' + : 'Are you sure you want to terminate the hike?', style: TextStyle(fontSize: 16, color: kBlack), ), actionsAlignment: MainAxisAlignment.spaceEvenly, diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index d372813..57fc96e 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -184,6 +184,7 @@ class DataBaseMutationFunctions { Future> fetchUserBeacons() async { List beacons = []; Set beaconIds = {}; + List expiredBeacons = []; final QueryResult result = await clientAuth .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); if (result.hasException) { @@ -199,10 +200,15 @@ class DataBaseMutationFunctions { for (var i in userInfo.beacon) { if (!beaconIds.contains(i.id)) { beaconIds.add(i.id); - beacons.add(i); + if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) + .isBefore(DateTime.now())) + expiredBeacons.add(i); + else + beacons.add(i); } } } + beacons.addAll(expiredBeacons); return beacons; } @@ -261,8 +267,17 @@ class DataBaseMutationFunctions { final Beacon beacon = Beacon.fromJson( result.data['joinBeacon'] as Map, ); + if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())) { + navigationService.showSnackBar( + "Looks like the beacon you are trying join has expired"); + return null; + } beacon.route.add(beacon.leader.location); return beacon; + } else { + navigationService + .showSnackBar("Something went wrong while trying to join Beacon"); } return null; } diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 9338820..16f7306 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -54,8 +54,10 @@ class HomeViewModel extends BaseModel { navigationService.pushScreen('/hikeScreen', arguments: HikeScreen(beacon, isLeader: false)); } else { - navigationService.showSnackBar('SomeThing went wrong'); + //there was some error, go back to homescreen. + setState(ViewState.idle); } + //Snackbar is displayed by joinBeacon itself on any error or trying to join expired beacon. } else { navigationService.showSnackBar('Enter valid passkey'); } diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 6f4962f..ef19d36 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -77,12 +77,15 @@ class _HikeScreenState extends State { }); } - Future setupSubscriptions() async { + Future setupSubscriptions(bool isExpired) async { + if (isBeaconExpired || isExpired) return; if (widget.isLeader) { // distanceFilter (in m) can be changed to reduce the backend calls await loc.changeSettings(interval: 3000, distanceFilter: 0.0); _leaderLocation = loc.onLocationChanged.listen((LocationData currentLocation) async { + if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())) _leaderLocation.cancel(); Coordinates coordinates = Coordinates(currentLocation.latitude, currentLocation.longitude); var addresses = @@ -125,7 +128,15 @@ class _HikeScreenState extends State { } else { mergedStream = beaconJoinedStream; } - final mergeStreamSubscription = mergedStream.listen((event) async { + StreamSubscription mergeStreamSubscription; + mergeStreamSubscription = mergedStream.listen((event) async { + if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())) { + mergeStreamSubscription.cancel(); + setState(() { + isBeaconExpired = true; + }); + } if (event.data != null) { print('${event.data}'); if (event.data.containsKey('beaconJoined')) { @@ -194,12 +205,13 @@ class _HikeScreenState extends State { @override void dispose() { - if (widget.isLeader) { + if (widget.isLeader && !isBeaconExpired) { _leaderLocation.cancel(); } - for (var streamSub in mergedStreamSubscriptions) { - streamSub.cancel(); - } + if (!isBeaconExpired) + for (var streamSub in mergedStreamSubscriptions) { + streamSub.cancel(); + } super.dispose(); } @@ -234,6 +246,8 @@ class _HikeScreenState extends State { await databaseFunctions.fetchBeaconInfo(widget.beacon.id).then((value) { beacon = value; setState(() { + isBeaconExpired = DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now()); hikers.add(value.leader); for (var i in value.followers) { if (!followerId.contains(i.id)) { @@ -294,7 +308,8 @@ class _HikeScreenState extends State { beacon = widget.beacon; fetchData(); graphQlClient = GraphQLConfig().graphQlClient(); - setupSubscriptions(); + setupSubscriptions(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())); isBusy = false; } @@ -365,8 +380,9 @@ class _HikeScreenState extends State { 'Total Followers: ${hikers.length - 1} (Swipe up to view the list of followers)\n', style: TextStyle(fontSize: 12)), TextSpan( - text: - 'Share this passkey to add user: ${widget.beacon.shortcode}\n', + text: isBeaconExpired + ? '' + : 'Share this passkey to add user: ${widget.beacon.shortcode}\n', style: TextStyle(fontSize: 12)), ]), ), @@ -502,8 +518,10 @@ class _HikeScreenState extends State { ), Align( alignment: Alignment(0.87, -0.85), - child: HikeScreenWidget.shareButton( - context, widget.beacon.shortcode)), + child: isBeaconExpired + ? Container() + : HikeScreenWidget.shareButton( + context, widget.beacon.shortcode)), Align( alignment: Alignment(-0.8, -0.9), child: GestureDetector( @@ -642,7 +660,7 @@ class _HikeScreenState extends State { return (await showDialog( context: context, builder: (context) => DialogBoxes.showExitDialog( - context, widget.isLeader, hikers.length), + context, widget.isLeader, hikers.length, isBeaconExpired), )) ?? false; } From e91b24c40b34890f768858fc73ab3da6fc33afac Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 10 Jan 2022 16:50:05 +0530 Subject: [PATCH 025/122] Templates introduced (#50) * PR template * bug issue template * custom issue template * feature issue template * Updated suggested changes Co-authored-by: Nishtha Bodani --- .github/ISSUE_TEMPLATE/bug_report.md | 34 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/custom.md | 9 ++++++ .github/ISSUE_TEMPLATE/feature_request.md | 21 ++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 7 +++++ 4 files changed, 71 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/custom.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..d65b91c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,34 @@ +--- +name: "🐞 Bug report" +about: Create a report to help us improve +title: "" +labels: "🐞 bug" +assignees: "" +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Demonstration** +If applicable, add screenshots or video to help explain your problem. + +**Environment** +- Device/emulator being used: +- OS (iOS/ Android); If Android then android version: +- Flutter version: + +**Additional context** +Add any other context about the problem here. + +**Are you working on this issue? (Yes/No)** \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md new file mode 100644 index 0000000..d24be76 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -0,0 +1,9 @@ +--- +name: Custom issue template +about: Describe this issue template's purpose here. +title: '' +labels: '' +assignees: '' + +--- + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..0cf4fd4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: "⭐️ Feature request" +about: Suggest an idea for this project +title: "" +labels: "🌟 feature" +assignees: "" +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. + +**Are you working on this? (Yes/No)** \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..b4820f6 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,7 @@ +Fixes # + +Describe the changes you have made in this PR - + +Screenshots of the changes (If any) - + +Note: Please check Allow edits from maintainers. if you would like us to assist in the PR. \ No newline at end of file From feae73f730d24e6caacecab0e5d17ad91509cb43 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Wed, 12 Jan 2022 19:46:52 +0530 Subject: [PATCH 026/122] Updated UI, fixed bugs and refactored code (#45) * Updated UI, fixed bugs and refactored code * checks * formatted constants * issue fixed * checks fixed * issue * unused import * inserted a comma * changed font-size * added a comma * unused code removed * checks --- lib/components/create_join_dialog.dart | 354 +++++++++++-------------- lib/components/dialog_boxes.dart | 83 +++--- lib/components/hike_button.dart | 2 +- lib/components/hike_screen_widget.dart | 15 +- lib/main.dart | 22 +- lib/utilities/constants.dart | 10 + lib/view_model/home_view_model.dart | 2 +- lib/views/auth_screen.dart | 282 ++++++++++---------- lib/views/hike_screen.dart | 34 ++- lib/views/home.dart | 74 ++++-- 10 files changed, 457 insertions(+), 421 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index d16af02..283bb78 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -1,234 +1,186 @@ import 'package:beacon/locator.dart'; -import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/services/validators.dart'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; import 'package:duration_picker/duration_picker.dart'; import 'package:flutter/material.dart'; -import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:sizer/sizer.dart'; class CreateJoinBeaconDialog { static Future createHikeDialog(BuildContext context, HomeViewModel model) { model.resultingDuration = Duration(minutes: 30); model.durationController = new TextEditingController(); return showDialog( - context: context, - builder: (context) => Dialog( - child: Form( - key: model.formKeyCreate, - child: Container( - height: 325, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - child: Padding( - padding: const EdgeInsets.all(4.0), - child: TextFormField( - validator: (value) => - Validator.validateBeaconTitle(value), - onChanged: (name) { - model.title = name; - }, - decoration: InputDecoration( - hintText: 'Title Here', - labelStyle: - TextStyle(fontSize: 18, color: kBlack), - labelText: 'Title', - alignLabelWithHint: true, - floatingLabelBehavior: - FloatingLabelBehavior.always, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 30, - ), - Container( - child: Padding( - padding: const EdgeInsets.all(4.0), - child: InkWell( - onTap: () async { - model.resultingDuration = - await showDurationPicker( - context: context, - initialTime: model.resultingDuration != null - ? model.resultingDuration - : Duration(minutes: 30), - ); - model.durationController.text = model - .resultingDuration - .toString() - .substring(0, 8); - }, - child: TextFormField( - enabled: false, - controller: model.durationController, - onChanged: (value) { - model.durationController.text = model - .resultingDuration - .toString() - .substring(0, 8); - }, - validator: (value) => - Validator.validateDuration( - value.toString()), - decoration: InputDecoration( - alignLabelWithHint: true, - errorStyle: - TextStyle(color: Colors.red[800]), - floatingLabelBehavior: - FloatingLabelBehavior.always, - labelText: 'Duration', - labelStyle: - TextStyle(fontSize: 18, color: kBlack), - hintText: - 'How long should beacon last for?', - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), - ), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 30, - ), - Flexible( - flex: 2, - child: HikeButton( - buttonWidth: 20, - buttonHeight: 20, - text: 'Create', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - // navigationService.pop(); - model.createHikeRoom(); - }), - ), - ], + context: context, + builder: (context) => Dialog( + child: Form( + key: model.formKeyCreate, + child: Container( + height: 48.h, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + height: 14.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: TextFormField( + style: TextStyle(fontSize: 22.0), + validator: (value) => + Validator.validateBeaconTitle(value), + onChanged: (name) { + model.title = name; + }, + decoration: InputDecoration( + hintText: 'Enter Title Here', + labelStyle: + TextStyle(fontSize: labelsize, color: kYellow), + hintStyle: + TextStyle(fontSize: hintsize, color: hintColor), + labelText: 'Title', + alignLabelWithHint: true, + floatingLabelBehavior: FloatingLabelBehavior.always, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), + ), ), + color: kLightBlue, ), - ), - ), - )); - } - - static Future joinBeaconDialog(BuildContext context, HomeViewModel model) { - return showDialog( - context: context, - builder: (context) => Dialog( - child: Form( - key: model.formKeyJoin, - child: Container( - height: 250, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - child: Padding( - padding: const EdgeInsets.all(4.0), - child: TextFormField( - validator: (value) => - Validator.validatePasskey(value), - onChanged: (key) { - model.enteredPasskey = key; - }, - decoration: InputDecoration( - hintText: 'Passkey Here', - hintStyle: - TextStyle(fontSize: 20, color: kBlack), - labelText: 'Passkey', - labelStyle: - TextStyle(fontSize: 14, color: kYellow), - ), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 30, - ), - Flexible( - child: HikeButton( - buttonWidth: 48, - text: 'Validate', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - navigationService.pop(); - model.joinHikeRoom(); - }), + SizedBox( + height: 2.h, + ), + Container( + height: 14.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + model.resultingDuration = await showDurationPicker( + context: context, + initialTime: model.resultingDuration != null + ? model.resultingDuration + : Duration(minutes: 30), + ); + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + child: TextFormField( + style: TextStyle(fontSize: 20.0), + enabled: false, + controller: model.durationController, + onChanged: (value) { + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + validator: (value) => + Validator.validateDuration(value.toString()), + decoration: InputDecoration( + alignLabelWithHint: true, + errorStyle: TextStyle(color: Colors.red[800]), + floatingLabelBehavior: + FloatingLabelBehavior.always, + labelText: 'Duration', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + hintText: 'Select duration of beacon', + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), ), - ], + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + flex: 2, + child: HikeButton( + buttonWidth: optbwidth, + buttonHeight: optbheight, + text: 'Create', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + // navigationService.pop(); + model.createHikeRoom(); + }, ), ), - ), + ], ), - )); + ), + ), + ), + ), + ); } - static Future addLandmarkDialog( - BuildContext context, LatLng loc, String id) { - String title; + static Future joinBeaconDialog(BuildContext context, HomeViewModel model) { return showDialog( context: context, builder: (context) => Dialog( - child: Container( - height: 250, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - height: 100, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: TextField( - onChanged: (key) { - title = key; - }, - decoration: InputDecoration( - alignLabelWithHint: true, - floatingLabelBehavior: FloatingLabelBehavior.always, - hintText: 'Add title for the landmark', - hintStyle: TextStyle(fontSize: 15, color: kBlack), - labelText: 'Title', - labelStyle: TextStyle(fontSize: 20, color: kYellow), + child: Form( + key: model.formKeyJoin, + child: Container( + height: 28.h, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + child: Padding( + padding: const EdgeInsets.all(4.0), + child: TextFormField( + style: TextStyle(fontSize: 22.0), + validator: (value) => Validator.validatePasskey(value), + onChanged: (key) { + model.enteredPasskey = key; + }, + decoration: InputDecoration( + alignLabelWithHint: true, + floatingLabelBehavior: FloatingLabelBehavior.always, + hintText: 'Enter Passkey Here', + hintStyle: + TextStyle(fontSize: hintsize, color: hintColor), + labelText: 'Passkey', + labelStyle: + TextStyle(fontSize: labelsize, color: kYellow), + border: InputBorder.none, + ), ), ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, ), - color: kLightBlue, - ), - SizedBox( - height: 30, - ), - Flexible( - child: HikeButton( - buttonWidth: 25, - text: 'Create Landmark', + Flexible( + child: HikeButton( + buttonWidth: optbwidth, + buttonHeight: optbheight, + text: 'Validate', + textSize: 18.0, textColor: Colors.white, buttonColor: kYellow, - onTap: () async { + onTap: () { navigationService.pop(); - await databaseFunctions.init(); - await databaseFunctions - .createLandmark(title, loc, id) - .then((value) { - return value; - }); - }), - ), - ], + model.joinHikeRoom(); + }, + ), + ), + ], + ), ), ), ), diff --git a/lib/components/dialog_boxes.dart b/lib/components/dialog_boxes.dart index 44cc7bf..2830bb7 100644 --- a/lib/components/dialog_boxes.dart +++ b/lib/components/dialog_boxes.dart @@ -27,6 +27,7 @@ class DialogBoxes { buttonWidth: 8.w, onTap: () => Navigator.of(context).pop(false), text: 'No', + textSize: 18.0, ), HikeButton( buttonHeight: 2.5.h, @@ -35,6 +36,7 @@ class DialogBoxes { navigationService.removeAllAndPush('/main', '/'); }, text: 'Yes', + textSize: 18.0, ), ], ); @@ -42,48 +44,49 @@ class DialogBoxes { static Future changeDurationDialog(BuildContext context) { return showDialog( - context: context, - builder: (context) => Dialog( - child: Container( - height: 500, - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 32, vertical: 16), - child: Column( - children: [ - Flexible( - child: Container( - color: kLightBlue, - child: Column( - children: [ - Text( - 'Change Beacon Duration', - style: TextStyle(color: kYellow, fontSize: 12), - ), - ], - ), + context: context, + builder: (context) => Dialog( + child: Container( + height: 500, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Flexible( + child: Container( + color: kLightBlue, + child: Column( + children: [ + Text( + 'Change Beacon Duration', + style: TextStyle(color: kYellow, fontSize: 14.0), ), - ), - SizedBox( - height: 30, - ), - Flexible( - child: HikeButton( - buttonWidth: 48, - text: 'Done', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - // DateTime newTime = - // DateTime.now().add(newDuration); - // update time - Navigator.pop(context); - }), - ), - ], + ], + ), ), ), - ), - )); + SizedBox( + height: 3.h, + ), + Flexible( + child: HikeButton( + buttonWidth: optbwidth, + text: 'Done', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + // DateTime newTime = + // DateTime.now().add(newDuration); + // update time + Navigator.pop(context); + }), + ), + ], + ), + ), + ), + ), + ); } } diff --git a/lib/components/hike_button.dart b/lib/components/hike_button.dart index 7e0a361..5a9b4ba 100644 --- a/lib/components/hike_button.dart +++ b/lib/components/hike_button.dart @@ -16,7 +16,7 @@ class HikeButton extends StatelessWidget { this.buttonColor = kYellow, this.text, this.textColor = Colors.white, - this.buttonWidth = 32, + this.buttonWidth = 32, //button sizes have been defined in constants.dart this.buttonHeight = 32, this.textSize = 18}); diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index 352903b..fe0f9ca 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:share/share.dart'; +import 'package:sizer/sizer.dart'; class HikeScreenWidget { static copyPasskey(String passkey) { @@ -24,7 +25,7 @@ class HikeScreenWidget { context: context, builder: (context) => Dialog( child: Container( - height: 400, + height: 35.h, child: Padding( padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 16), @@ -40,11 +41,13 @@ class HikeScreenWidget { ), ), SizedBox( - height: 30, + height: 3.h, ), Flexible( child: HikeButton( - textSize: 20, + buttonHeight: optbheight, + buttonWidth: optbwidth, + textSize: 18, text: 'Generate URL', textColor: Colors.white, buttonColor: kYellow, @@ -54,11 +57,13 @@ class HikeScreenWidget { }), ), SizedBox( - height: 10, + height: 1.h, ), Flexible( child: HikeButton( - textSize: 20, + buttonHeight: optbheight * 1, + buttonWidth: optbwidth, + textSize: 18, text: 'Copy Passkey', textColor: Colors.white, buttonColor: kYellow, diff --git a/lib/main.dart b/lib/main.dart index f5a3c39..0fc0067 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,18 +32,20 @@ void main() async { await Hive.openBox('currentUser'); await Hive.openBox('beacons'); setupLocator(); - runApp(OverlaySupport( - child: Sizer( - builder: (context, orientation, deviceType) => MaterialApp( - debugShowCheckedModeBanner: false, - title: 'Beacon', - navigatorKey: navigationService.navigatorKey, - theme: ThemeData(fontFamily: 'FuturaBold'), - initialRoute: '/', - onGenerateRoute: router.generateRoute, + runApp( + OverlaySupport( + child: Sizer( + builder: (context, orientation, deviceType) => MaterialApp( + debugShowCheckedModeBanner: false, + title: 'Beacon', + navigatorKey: navigationService.navigatorKey, + theme: ThemeData(fontFamily: 'FuturaBold'), + initialRoute: '/', + onGenerateRoute: router.generateRoute, + ), ), ), - )); + ); } class DemoPageView extends StatelessWidget { diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index 93db2c1..d282e00 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -1,16 +1,26 @@ import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:sizer/sizer.dart'; const Color kYellow = Color(0xFFFDBB2C); const Color kBlue = Color(0xFF222375); const Color kLightBlue = Color(0xFFE8F1F8); const Color kBlack = Color(0xFF343434); const Color shimmerSkeletonColor = Color(0xff4e4f91); +const Color hintColor = Colors.black54; // Hint Text Color const double CAMERA_ZOOM = 15; const double CAMERA_TILT = 80; const double CAMERA_BEARING = 30; +// Button Sizings +final double labelsize = 20; +final double hintsize = 18; +final double homebheight = 4.45.h; +final double homebwidth = 3.w; +final double optbheight = 3.5.h; +final double optbwidth = 8.w; + class AppConstants { static Future getLocation() async { bool serviceEnabled; diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 16f7306..1bcb1f0 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -59,7 +59,7 @@ class HomeViewModel extends BaseModel { } //Snackbar is displayed by joinBeacon itself on any error or trying to join expired beacon. } else { - navigationService.showSnackBar('Enter valid passkey'); + navigationService.showSnackBar('Enter Valid Passkey'); } } diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index e2e0a7f..d01a6bb 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -1,10 +1,12 @@ import 'package:beacon/components/hike_button.dart'; import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/services/validators.dart'; +import 'package:beacon/utilities/constants.dart'; import 'package:beacon/utilities/indication_painter.dart'; import 'package:beacon/view_model/auth_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; +import 'package:sizer/sizer.dart'; class AuthScreen extends StatefulWidget { const AuthScreen({Key key}) : super(key: key); @@ -17,88 +19,90 @@ class _AuthScreenState extends State with SingleTickerProviderStateMixin { @override Widget build(BuildContext context) { - return BaseView(builder: (context, model, child) { - return (model.isBusy) - ? Scaffold(body: Center(child: CircularProgressIndicator())) - : new Scaffold( - key: model.scaffoldKey, - // resizeToAvoidBottomInset: false, - body: Container( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height >= 775.0 - ? MediaQuery.of(context).size.height - : 775.0, - child: Stack( - children: [ - CustomPaint( - size: Size(MediaQuery.of(context).size.width, - MediaQuery.of(context).size.height), - painter: ShapePainter(), - ), - Container( - alignment: Alignment.center, - padding: EdgeInsets.only( - top: MediaQuery.of(context).size.height / 3.5), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(top: 20.0), - child: _buildMenuBar(context, model), - ), - Expanded( - flex: 2, - child: PageView( - controller: model.pageController, - onPageChanged: (i) { - if (i == 0) { - setState(() { - model.right = Colors.black; - model.left = Colors.white; - }); - Future.delayed(Duration(milliseconds: 500), - () { - model.requestFocusForFocusNode( - model.emailLogin); - }); - } else if (i == 1) { - setState(() { - model.right = Colors.white; - model.left = Colors.black; - }); - Future.delayed(Duration(milliseconds: 500), - () { - model.requestFocusForFocusNode(model.name); - }); - } - }, - children: [ - new ConstrainedBox( - constraints: const BoxConstraints.expand(), - child: _buildSignIn(context, model), - ), - new ConstrainedBox( - constraints: const BoxConstraints.expand(), - child: _buildSignUp(context, model), - ), - ], + Size screensize = MediaQuery.of(context).size; + return BaseView( + builder: (context, model, child) { + return (model.isBusy) + ? Scaffold(body: Center(child: CircularProgressIndicator())) + : new Scaffold( + key: model.scaffoldKey, + resizeToAvoidBottomInset: true, + body: Container( + width: screensize.width, + height: + screensize.height >= 775.0 ? screensize.height : 775.0, + child: Stack( + children: [ + CustomPaint( + size: Size(screensize.width, screensize.height), + painter: ShapePainter(), + ), + Container( + alignment: Alignment.center, + padding: EdgeInsets.only(top: screensize.height / 3.5), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(top: 20.0), + child: _buildMenuBar(context, model), ), - ), - ], + Expanded( + flex: 2, + child: PageView( + controller: model.pageController, + onPageChanged: (i) { + if (i == 0) { + setState(() { + model.right = Colors.black; + model.left = Colors.white; + }); + Future.delayed(Duration(milliseconds: 500), + () { + model.requestFocusForFocusNode( + model.emailLogin); + }); + } else if (i == 1) { + setState(() { + model.right = Colors.white; + model.left = Colors.black; + }); + Future.delayed(Duration(milliseconds: 500), + () { + model + .requestFocusForFocusNode(model.name); + }); + } + }, + children: [ + new ConstrainedBox( + constraints: const BoxConstraints.expand(), + child: _buildSignIn(context, model), + ), + new ConstrainedBox( + constraints: const BoxConstraints.expand(), + child: _buildSignUp(context, model), + ), + ], + ), + ), + ], + ), ), - ), - ], + ], + ), ), - ), - ); - }); + ); + }, + ); } Widget _buildMenuBar(BuildContext context, AuthViewModel model) { + Size screensize = MediaQuery.of(context).size; return Container( - padding: EdgeInsets.symmetric(horizontal: 50), - width: MediaQuery.of(context).size.width, - height: 50.0, + padding: EdgeInsets.symmetric(horizontal: 13.5.w), + width: screensize.width, + height: 6.75.h, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(25.0)), ), @@ -118,25 +122,22 @@ class _AuthScreenState extends State "Existing", style: TextStyle( color: model.left, - fontSize: 16.0, + fontSize: 18.0, ), ), ), ), - //Container(height: 33.0, width: 1.0, color: Colors.white), Expanded( child: TextButton( style: ButtonStyle( overlayColor: MaterialStateProperty.all(Colors.transparent), ), - //splashColor: Colors.transparent, - //highlightColor: Colors.transparent, onPressed: model.onSignUpButtonPress, child: Text( "New", style: TextStyle( color: model.right, - fontSize: 16.0, + fontSize: 18.0, ), ), ), @@ -148,10 +149,11 @@ class _AuthScreenState extends State } Widget _buildSignIn(BuildContext context, AuthViewModel model) { + Size screensize = MediaQuery.of(context).size; return SingleChildScrollView( child: Container( - padding: EdgeInsets.only(top: 23.0, left: 35, right: 35), - width: MediaQuery.of(context).size.width, + padding: EdgeInsets.only(top: 3.h, left: 8.5.w, right: 8.5.w), + width: screensize.width, child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -165,13 +167,13 @@ class _AuthScreenState extends State key: model.formKeyLogin, autovalidateMode: model.loginValidate, child: Container( - // width: MediaQuery.of(context).size.width - 35, - // height: MediaQuery.of(context).size.height / 4.3, + width: screensize.width - 70, child: Column( children: [ - Padding( - padding: - EdgeInsets.symmetric(horizontal: 10, vertical: 20), + Container( + height: 13.h, + padding: EdgeInsets.symmetric( + horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.loginValidate, focusNode: model.emailLogin, @@ -184,21 +186,23 @@ class _AuthScreenState extends State icon: Icon( Icons.mail_outline, color: Colors.black, - size: 22.0, + size: 24.0, ), hintText: "Email Address", - hintStyle: TextStyle(fontSize: 17.0), + hintStyle: TextStyle( + fontSize: hintsize - 2, color: hintColor), ), ), ), Container( - width: 250.0, - height: 1.0, + width: 62.w, + height: 0.2.h, color: Colors.grey[400], ), - Padding( - padding: - EdgeInsets.symmetric(horizontal: 10, vertical: 20), + Container( + height: 13.h, + padding: EdgeInsets.symmetric( + horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.loginValidate, focusNode: model.passwordLogin, @@ -211,18 +215,19 @@ class _AuthScreenState extends State border: InputBorder.none, icon: Icon( Icons.lock, - size: 22.0, + size: 24.0, color: Colors.black, ), hintText: "Password", - hintStyle: TextStyle(fontSize: 17.0), + hintStyle: TextStyle( + fontSize: hintsize - 2, color: hintColor), suffixIcon: IconButton( onPressed: () => model.displayPasswordLogin(), icon: Icon( model.obscureTextLogin ? Icons.remove_red_eye_sharp : Icons.remove_red_eye_outlined, - size: 15.0, + size: 20.0, color: Colors.black, ), ), @@ -235,17 +240,17 @@ class _AuthScreenState extends State ), ), SizedBox( - height: 20, + height: 3.5.h, ), HikeButton( onTap: model.nextLogin, text: 'LOGIN', - buttonWidth: 90, + buttonWidth: optbwidth, buttonHeight: 15, ), Padding( - padding: - EdgeInsets.only(left: 15.0, right: 15.0, top: 20, bottom: 20), + padding: EdgeInsets.only( + left: 15.0, right: 15.0, top: 15.0, bottom: 15.0), child: Text( "Or", style: TextStyle( @@ -258,7 +263,7 @@ class _AuthScreenState extends State onTap: () => model.loginAsGuest(), text: 'LOGIN AS GUEST', buttonHeight: 15, - buttonWidth: 35, + buttonWidth: optbwidth, ), ], ), @@ -267,9 +272,10 @@ class _AuthScreenState extends State } Widget _buildSignUp(BuildContext context, AuthViewModel model) { + Size screensize = MediaQuery.of(context).size; return SingleChildScrollView( child: Container( - padding: EdgeInsets.only(top: 23.0), + padding: EdgeInsets.only(top: 3.h, left: 8.5.w, right: 8.5.w), child: Column( children: [ Card( @@ -282,12 +288,13 @@ class _AuthScreenState extends State key: model.formKeySignup, autovalidateMode: model.signupValidate, child: Container( - width: MediaQuery.of(context).size.width - 70, + width: screensize.width - 70, // height: 280.0, child: Column(children: [ - Padding( - padding: - EdgeInsets.symmetric(horizontal: 13, vertical: 20), + Container( + height: 13.h, + padding: EdgeInsets.symmetric( + horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.signupValidate, focusNode: model.name, @@ -295,26 +302,29 @@ class _AuthScreenState extends State controller: model.signupNameController, keyboardType: TextInputType.text, textCapitalization: TextCapitalization.words, - style: TextStyle(fontSize: 16.0, color: Colors.black), + style: TextStyle(fontSize: 18.0, color: Colors.black), decoration: InputDecoration( border: InputBorder.none, icon: Icon( Icons.account_box, color: Colors.black, + size: 24, ), hintText: "Name", - hintStyle: TextStyle(fontSize: 16.0), + hintStyle: TextStyle( + fontSize: hintsize - 2, color: hintColor), ), ), ), Container( - width: 250.0, - height: 1.0, + width: 62.w, + height: 0.2.h, color: Colors.grey[400], ), - Padding( - padding: - EdgeInsets.symmetric(horizontal: 10, vertical: 20), + Container( + height: 13.h, + padding: EdgeInsets.symmetric( + horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.signupValidate, validator: (value) => Validator.validateEmail(value), @@ -328,20 +338,23 @@ class _AuthScreenState extends State icon: Icon( Icons.mail, color: Colors.black, + size: 24, ), hintText: "Email Address", - hintStyle: TextStyle(fontSize: 16.0), + hintStyle: TextStyle( + fontSize: hintsize - 2, color: hintColor), ), ), ), Container( - width: 250.0, - height: 1.0, + width: 62.w, + height: 0.2.h, color: Colors.grey[400], ), - Padding( - padding: - EdgeInsets.symmetric(horizontal: 10, vertical: 20), + Container( + height: 13.h, + padding: EdgeInsets.symmetric( + horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.signupValidate, focusNode: model.password, @@ -356,6 +369,7 @@ class _AuthScreenState extends State icon: Icon( Icons.lock, color: Colors.black, + size: 24, ), suffixIcon: IconButton( onPressed: () => model.displayPasswordSignup(), @@ -363,12 +377,13 @@ class _AuthScreenState extends State model.obscureTextSignup ? Icons.remove_red_eye_sharp : Icons.remove_red_eye_outlined, - size: 15.0, + size: 20.0, color: Colors.black, ), ), hintText: "Password", - hintStyle: TextStyle(fontSize: 16.0), + hintStyle: TextStyle( + fontSize: hintsize - 2, color: hintColor), ), ), ), @@ -376,19 +391,20 @@ class _AuthScreenState extends State ), ), SizedBox( - height: 15, + height: 3.5.h, ), Container( - // margin: EdgeInsets.only(top: 300.0), - decoration: new BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(5.0)), - ), - child: HikeButton( - onTap: () => model.nextSignup(), - text: 'SIGNIN', - buttonHeight: 18, - buttonWidth: 55, - )), + // margin: EdgeInsets.only(top: 300.0), + decoration: new BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(5.0)), + ), + child: HikeButton( + onTap: () => model.nextSignup(), + text: 'SIGN UP', + buttonHeight: 15, + buttonWidth: optbwidth, + ), + ), ], ), ), diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index ef19d36..8aff100 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -21,6 +21,7 @@ import 'package:beacon/services/graphql_config.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:overlay_support/overlay_support.dart'; import 'package:rxdart/rxdart.dart'; +import 'package:sizer/sizer.dart'; import 'package:sliding_up_panel/sliding_up_panel.dart'; class HikeScreen extends StatefulWidget { @@ -326,8 +327,8 @@ class _HikeScreenState extends State { child: ModalProgressHUD( inAsyncCall: isGeneratingLink || isBusy, child: SlidingUpPanel( - maxHeight: MediaQuery.of(context).size.height * 0.6, - minHeight: 154, + maxHeight: 60.h, + minHeight: 20.h, controller: _panelController, collapsed: Container( decoration: BoxDecoration( @@ -338,13 +339,13 @@ class _HikeScreenState extends State { child: Column( children: [ SizedBox( - height: 12.0, + height: 1.5.h, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( - width: 60, + width: 65, height: 5, decoration: BoxDecoration( color: Colors.grey[300], @@ -354,7 +355,7 @@ class _HikeScreenState extends State { ], ), SizedBox( - height: 10, + height: 1.5.h, ), Container( width: double.infinity, @@ -370,7 +371,7 @@ class _HikeScreenState extends State { text: isBeaconExpired ? 'Beacon has been expired\n' : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', - style: TextStyle(fontSize: 16)), + style: TextStyle(fontSize: 18)), TextSpan( text: 'Beacon holder at: $address\n', @@ -387,7 +388,7 @@ class _HikeScreenState extends State { ]), ), ), - height: 120, + height: 15.h, ), ], ), @@ -418,7 +419,7 @@ class _HikeScreenState extends State { context: context, builder: (context) => Dialog( child: Container( - height: 250, + height: 30.h, child: Padding( padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 16), @@ -427,11 +428,13 @@ class _HikeScreenState extends State { child: Column( children: [ Container( - height: 100, + height: 12.h, child: Padding( padding: const EdgeInsets.all(4.0), child: TextFormField( + style: + TextStyle(fontSize: 20.0), onChanged: (key) { title = key; }, @@ -444,6 +447,7 @@ class _HikeScreenState extends State { } }, decoration: InputDecoration( + border: InputBorder.none, alignLabelWithHint: true, floatingLabelBehavior: FloatingLabelBehavior @@ -451,11 +455,11 @@ class _HikeScreenState extends State { hintText: 'Add title for the landmark', hintStyle: TextStyle( - fontSize: 15, - color: kBlack), + fontSize: hintsize, + color: hintColor), labelText: 'Title', labelStyle: TextStyle( - fontSize: 20, + fontSize: labelsize, color: kYellow), ), ), @@ -463,12 +467,14 @@ class _HikeScreenState extends State { color: kLightBlue, ), SizedBox( - height: 30, + height: 2.h, ), Flexible( child: HikeButton( - buttonWidth: 25, + buttonWidth: optbwidth, + buttonHeight: optbheight, text: 'Create Landmark', + textSize: 18.0, textColor: Colors.white, buttonColor: kYellow, onTap: () async { diff --git a/lib/views/home.dart b/lib/views/home.dart index 14d34bb..12bf4d7 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -67,6 +67,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { onTap: () => Navigator.of(context).pop(false), text: 'No', + textSize: 18.0, ), HikeButton( buttonHeight: 2.5.h, @@ -76,6 +77,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { model.logout(); }, text: 'Yes', + textSize: 18.0, ), ], )), @@ -86,7 +88,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { ), ), Padding( - padding: EdgeInsets.fromLTRB(4.w, 185, 4.w, 5), + padding: EdgeInsets.fromLTRB(4.w, 25.h, 4.w, 5), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisSize: MainAxisSize.max, @@ -95,7 +97,8 @@ class _MainScreenState extends State with TickerProviderStateMixin { Container( width: 45.w, child: HikeButton( - buttonWidth: 0.h, + buttonWidth: homebwidth, + buttonHeight: homebheight, text: 'Create Hike', textColor: Colors.white, borderColor: Colors.white, @@ -117,7 +120,8 @@ class _MainScreenState extends State with TickerProviderStateMixin { Container( width: 45.w, child: HikeButton( - buttonWidth: 0.h, + buttonWidth: homebwidth, + buttonHeight: homebheight, text: 'Join a Hike', textColor: kYellow, borderColor: kYellow, @@ -184,14 +188,50 @@ class _MainScreenState extends State with TickerProviderStateMixin { ? SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), - child: Center( - child: Text( - 'You haven\'t joined or created any beacon yet :(', - style: TextStyle( - color: - kBlack, - fontSize: - 18))), + child: Column( + children: [ + Text( + 'You haven\'t joined or created any beacon yet', + textAlign: + TextAlign + .center, + style: TextStyle( + color: + kBlack, + fontSize: + 20), + ), + SizedBox( + height: 2.h, + ), + RichText( + text: TextSpan( + // textAlign: + // TextAlign + // .center, + style: TextStyle(color: kBlack, fontSize: 20), + children: [ + TextSpan( + text: + 'Join', + style: TextStyle( + color: + kYellow)), + TextSpan( + text: + ' a Hike or '), + TextSpan( + text: + 'Create', + style: TextStyle( + color: + kYellow)), + TextSpan( + text: + ' a new one! '), + ])), + ], + ), ) : ListView.builder( physics: @@ -245,11 +285,13 @@ class _MainScreenState extends State with TickerProviderStateMixin { physics: AlwaysScrollableScrollPhysics(), child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 18))), + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 20), + ), + ), ); } return ListView.builder( From 63b57fbc9eee13b470b4e5ca2cd484cec9dc4868 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 17 Jan 2022 20:37:57 +0530 Subject: [PATCH 027/122] Exit popbox and rounded corners on dialog boxes (#61) --- lib/components/create_join_dialog.dart | 6 + lib/components/dialog_boxes.dart | 6 + lib/components/hike_screen_widget.dart | 3 + lib/views/auth_screen.dart | 185 +++++---- lib/views/hike_screen.dart | 3 + lib/views/home.dart | 513 ++++++++++++++----------- 6 files changed, 414 insertions(+), 302 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 283bb78..832c71c 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -14,6 +14,9 @@ class CreateJoinBeaconDialog { return showDialog( context: context, builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), child: Form( key: model.formKeyCreate, child: Container( @@ -130,6 +133,9 @@ class CreateJoinBeaconDialog { return showDialog( context: context, builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), child: Form( key: model.formKeyJoin, child: Container( diff --git a/lib/components/dialog_boxes.dart b/lib/components/dialog_boxes.dart index 2830bb7..6824be7 100644 --- a/lib/components/dialog_boxes.dart +++ b/lib/components/dialog_boxes.dart @@ -8,6 +8,9 @@ class DialogBoxes { static AlertDialog showExitDialog( BuildContext context, bool isLeader, int X, bool isBeaconExpired) { return AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), title: Text( 'This will terminate the hike, Confirm?', style: TextStyle(fontSize: 25, color: kYellow), @@ -46,6 +49,9 @@ class DialogBoxes { return showDialog( context: context, builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), child: Container( height: 500, child: Padding( diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index fe0f9ca..e9f3117 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -24,6 +24,9 @@ class HikeScreenWidget { showDialog( context: context, builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), child: Container( height: 35.h, child: Padding( diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index d01a6bb..f9a2336 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -6,6 +6,7 @@ import 'package:beacon/utilities/indication_painter.dart'; import 'package:beacon/view_model/auth_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:sizer/sizer.dart'; class AuthScreen extends StatefulWidget { @@ -17,83 +18,125 @@ class AuthScreen extends StatefulWidget { class _AuthScreenState extends State with SingleTickerProviderStateMixin { + Future _onPopHome() async { + return showDialog( + context: context, + builder: (context) => AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + actionsAlignment: MainAxisAlignment.spaceEvenly, + contentPadding: EdgeInsets.all(25.0), + title: Text( + 'Confirm Exit', + style: TextStyle(fontSize: 25, color: kYellow), + ), + content: Text( + 'Do you really want to exit?', + style: TextStyle(fontSize: 18, color: kBlack), + ), + actions: [ + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => Navigator.of(context).pop(false), + text: 'No', + ), + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => + SystemChannels.platform.invokeMethod('SystemNavigator.pop'), + text: 'Yes', + ), + ], + ), + ); + } + @override Widget build(BuildContext context) { Size screensize = MediaQuery.of(context).size; - return BaseView( - builder: (context, model, child) { - return (model.isBusy) - ? Scaffold(body: Center(child: CircularProgressIndicator())) - : new Scaffold( - key: model.scaffoldKey, - resizeToAvoidBottomInset: true, - body: Container( - width: screensize.width, - height: - screensize.height >= 775.0 ? screensize.height : 775.0, - child: Stack( - children: [ - CustomPaint( - size: Size(screensize.width, screensize.height), - painter: ShapePainter(), - ), - Container( - alignment: Alignment.center, - padding: EdgeInsets.only(top: screensize.height / 3.5), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(top: 20.0), - child: _buildMenuBar(context, model), - ), - Expanded( - flex: 2, - child: PageView( - controller: model.pageController, - onPageChanged: (i) { - if (i == 0) { - setState(() { - model.right = Colors.black; - model.left = Colors.white; - }); - Future.delayed(Duration(milliseconds: 500), - () { - model.requestFocusForFocusNode( - model.emailLogin); - }); - } else if (i == 1) { - setState(() { - model.right = Colors.white; - model.left = Colors.black; - }); - Future.delayed(Duration(milliseconds: 500), - () { - model - .requestFocusForFocusNode(model.name); - }); - } - }, - children: [ - new ConstrainedBox( - constraints: const BoxConstraints.expand(), - child: _buildSignIn(context, model), - ), - new ConstrainedBox( - constraints: const BoxConstraints.expand(), - child: _buildSignUp(context, model), - ), - ], + return WillPopScope( + onWillPop: _onPopHome, + child: BaseView( + builder: (context, model, child) { + return (model.isBusy) + ? Scaffold(body: Center(child: CircularProgressIndicator())) + : new Scaffold( + key: model.scaffoldKey, + resizeToAvoidBottomInset: true, + body: Container( + width: screensize.width, + height: + screensize.height >= 775.0 ? screensize.height : 775.0, + child: Stack( + children: [ + CustomPaint( + size: Size(screensize.width, screensize.height), + painter: ShapePainter(), + ), + Container( + alignment: Alignment.center, + padding: + EdgeInsets.only(top: screensize.height / 3.5), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(top: 20.0), + child: _buildMenuBar(context, model), ), - ), - ], + Expanded( + flex: 2, + child: PageView( + controller: model.pageController, + onPageChanged: (i) { + if (i == 0) { + setState(() { + model.right = Colors.black; + model.left = Colors.white; + }); + Future.delayed( + Duration(milliseconds: 500), () { + model.requestFocusForFocusNode( + model.emailLogin); + }); + } else if (i == 1) { + setState(() { + model.right = Colors.white; + model.left = Colors.black; + }); + Future.delayed( + Duration(milliseconds: 500), () { + model.requestFocusForFocusNode( + model.name); + }); + } + }, + children: [ + new ConstrainedBox( + constraints: + const BoxConstraints.expand(), + child: _buildSignIn(context, model), + ), + new ConstrainedBox( + constraints: + const BoxConstraints.expand(), + child: _buildSignUp(context, model), + ), + ], + ), + ), + ], + ), ), - ), - ], + ], + ), ), - ), - ); - }, + ); + }, + ), ); } diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 8aff100..79238bc 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -418,6 +418,9 @@ class _HikeScreenState extends State { showDialog( context: context, builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), child: Container( height: 30.h, child: Padding( diff --git a/lib/views/home.dart b/lib/views/home.dart index 12bf4d7..cb1e46d 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -9,6 +9,7 @@ import 'package:beacon/utilities/constants.dart'; import 'package:beacon/view_model/home_view_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:modal_progress_hud/modal_progress_hud.dart'; import 'package:sizer/sizer.dart'; @@ -20,169 +21,208 @@ class MainScreen extends StatefulWidget { } class _MainScreenState extends State with TickerProviderStateMixin { + Future _onPopHome() async { + return showDialog( + context: context, + builder: (context) => AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + actionsAlignment: MainAxisAlignment.spaceEvenly, + contentPadding: EdgeInsets.all(25.0), + title: Text( + 'Confirm Exit', + style: TextStyle(fontSize: 25, color: kYellow), + ), + content: Text( + 'Do you really want to exit?', + style: TextStyle(fontSize: 18, color: kBlack), + ), + actions: [ + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => Navigator.of(context).pop(false), + text: 'No', + ), + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => + SystemChannels.platform.invokeMethod('SystemNavigator.pop'), + text: 'Yes', + ), + ], + ), + ); + } + @override Widget build(BuildContext context) { - return BaseView(builder: (context, model, child) { - TabController tabController = new TabController(length: 2, vsync: this); - return model.isBusy - ? Scaffold(body: Center(child: CircularProgressIndicator())) - : Scaffold( - resizeToAvoidBottomInset: false, - body: SafeArea( - child: ModalProgressHUD( - inAsyncCall: model.isCreatingHike, - child: Stack( - children: [ - CustomPaint( - size: Size(MediaQuery.of(context).size.width, - MediaQuery.of(context).size.height - 200), - painter: ShapePainter(), - ), - Align( - alignment: Alignment(0.9, -0.8), - child: FloatingActionButton( - onPressed: () => showDialog( - context: context, - builder: (context) => AlertDialog( - actionsAlignment: - MainAxisAlignment.spaceEvenly, - title: Text( - (userConfig.currentUser.isGuest) - ? 'Create Account' - : 'Logout', - style: TextStyle( - fontSize: 25, color: kYellow), - ), - content: Text( - (userConfig.currentUser.isGuest) - ? 'Would you like to create an account?' - : 'Are you sure you wanna logout?', - style: TextStyle( - fontSize: 16, color: kBlack), - ), - actions: [ - HikeButton( - buttonHeight: 2.5.h, - buttonWidth: 8.w, - onTap: () => - Navigator.of(context).pop(false), - text: 'No', - textSize: 18.0, + return WillPopScope( + onWillPop: _onPopHome, + child: BaseView(builder: (context, model, child) { + TabController tabController = new TabController(length: 2, vsync: this); + return model.isBusy + ? Scaffold(body: Center(child: CircularProgressIndicator())) + : Scaffold( + resizeToAvoidBottomInset: false, + body: SafeArea( + child: ModalProgressHUD( + inAsyncCall: model.isCreatingHike, + child: Stack( + children: [ + CustomPaint( + size: Size(MediaQuery.of(context).size.width, + MediaQuery.of(context).size.height - 200), + painter: ShapePainter(), + ), + Align( + alignment: Alignment(0.9, -0.8), + child: FloatingActionButton( + onPressed: () => showDialog( + context: context, + builder: (context) => AlertDialog( + actionsAlignment: + MainAxisAlignment.spaceEvenly, + title: Text( + (userConfig.currentUser.isGuest) + ? 'Create Account' + : 'Logout', + style: TextStyle( + fontSize: 25, color: kYellow), ), - HikeButton( - buttonHeight: 2.5.h, - buttonWidth: 8.w, - onTap: () { - navigationService.pop(); - model.logout(); - }, - text: 'Yes', - textSize: 18.0, + content: Text( + (userConfig.currentUser.isGuest) + ? 'Would you like to create an account?' + : 'Are you sure you wanna logout?', + style: TextStyle( + fontSize: 16, color: kBlack), ), - ], - )), - backgroundColor: kYellow, - child: (userConfig.currentUser.isGuest) - ? Icon(Icons.person) - : Icon(Icons.logout), + actions: [ + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => + Navigator.of(context).pop(false), + text: 'No', + textSize: 18.0, + ), + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () { + navigationService.pop(); + model.logout(); + }, + text: 'Yes', + textSize: 18.0, + ), + ], + )), + backgroundColor: kYellow, + child: (userConfig.currentUser.isGuest) + ? Icon(Icons.person) + : Icon(Icons.logout), + ), ), - ), - Padding( - padding: EdgeInsets.fromLTRB(4.w, 25.h, 4.w, 5), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - mainAxisSize: MainAxisSize.max, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - width: 45.w, - child: HikeButton( - buttonWidth: homebwidth, - buttonHeight: homebheight, - text: 'Create Hike', - textColor: Colors.white, - borderColor: Colors.white, - buttonColor: kYellow, - onTap: () { - if (userConfig.currentUser.isGuest) { - navigationService.showSnackBar( - 'You need to login with credentials to start a hike'); - } else { - CreateJoinBeaconDialog.createHikeDialog( - context, model); - } - }, + Padding( + padding: EdgeInsets.fromLTRB(4.w, 25.h, 4.w, 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 45.w, + child: HikeButton( + buttonWidth: homebwidth, + buttonHeight: homebheight, + text: 'Create Hike', + textColor: Colors.white, + borderColor: Colors.white, + buttonColor: kYellow, + onTap: () { + if (userConfig.currentUser.isGuest) { + navigationService.showSnackBar( + 'You need to login with credentials to start a hike'); + } else { + CreateJoinBeaconDialog.createHikeDialog( + context, model); + } + }, + ), ), - ), - SizedBox( - width: 2.w, - ), - Container( - width: 45.w, - child: HikeButton( - buttonWidth: homebwidth, - buttonHeight: homebheight, - text: 'Join a Hike', - textColor: kYellow, - borderColor: kYellow, - buttonColor: Colors.white, - onTap: () async { - CreateJoinBeaconDialog.joinBeaconDialog( - context, model); - }, + SizedBox( + width: 2.w, ), - ), - ], - ), - ), - Column( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Container( - height: MediaQuery.of(context).size.height / 1.75, - margin: EdgeInsets.only(top: 20), - decoration: BoxDecoration( - color: kLightBlue, - borderRadius: BorderRadius.only( - topLeft: const Radius.circular(50.0), - topRight: const Radius.circular(50.0))), - child: Column( - children: [ - TabBar( - indicatorSize: TabBarIndicatorSize.tab, - indicatorColor: kBlue, - labelColor: kBlack, - tabs: [ - Tab(text: 'Your Beacons'), - Tab(text: 'Nearby Beacons'), - ], - controller: tabController, + Container( + width: 45.w, + child: HikeButton( + buttonWidth: homebwidth, + buttonHeight: homebheight, + text: 'Join a Hike', + textColor: kYellow, + borderColor: kYellow, + buttonColor: Colors.white, + onTap: () async { + CreateJoinBeaconDialog.joinBeaconDialog( + context, model); + }, ), - Expanded( - child: TabBarView( + ), + ], + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + height: MediaQuery.of(context).size.height / 1.75, + margin: EdgeInsets.only(top: 20), + decoration: BoxDecoration( + color: kLightBlue, + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(50.0), + topRight: const Radius.circular(50.0))), + child: Column( + children: [ + TabBar( + indicatorSize: TabBarIndicatorSize.tab, + indicatorColor: kBlue, + labelColor: kBlack, + tabs: [ + Tab(text: 'Your Beacons'), + Tab(text: 'Nearby Beacons'), + ], controller: tabController, - children: [ - Padding( - padding: const EdgeInsets.all(12.0), - child: FutureBuilder( - future: databaseFunctions - .fetchUserBeacons(), - builder: (context, snapshot) { - if (snapshot.connectionState == - ConnectionState.done) { - if (snapshot.hasError) { - return Center( - child: Text( - snapshot.error.toString(), - textAlign: TextAlign.center, - textScaleFactor: 1.3, - ), - ); - } - final List posts = - snapshot.data; - return Container( + ), + Expanded( + child: TabBarView( + controller: tabController, + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: FutureBuilder( + future: databaseFunctions + .fetchUserBeacons(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error.toString(), + textAlign: + TextAlign.center, + textScaleFactor: 1.3, + ), + ); + } + final List posts = + snapshot.data; + return Container( alignment: Alignment.center, child: posts.length == 0 ? SingleChildScrollView( @@ -205,12 +245,16 @@ class _MainScreenState extends State with TickerProviderStateMixin { height: 2.h, ), RichText( - text: TextSpan( - // textAlign: - // TextAlign - // .center, - style: TextStyle(color: kBlack, fontSize: 20), - children: [ + text: TextSpan( + // textAlign: + // TextAlign + // .center, + style: TextStyle( + color: + kBlack, + fontSize: + 20), + children: [ TextSpan( text: 'Join', @@ -229,7 +273,9 @@ class _MainScreenState extends State with TickerProviderStateMixin { TextSpan( text: ' a new one! '), - ])), + ], + ), + ), ], ), ) @@ -250,90 +296,95 @@ class _MainScreenState extends State with TickerProviderStateMixin { posts[ index]); }, - )); - } else { - return Center( - child: BeaconCustomWidgets - .getPlaceholder(), - ); - } - }, - ), - ), - Container( - alignment: Alignment.center, - child: FutureBuilder( - future: databaseFunctions - .fetchNearbyBeacon(), - builder: (context, snapshot) { - if (snapshot.connectionState == - ConnectionState.done) { - if (snapshot.hasError) { + ), + ); + } else { return Center( - child: Text( - snapshot.error.toString(), - textAlign: TextAlign.center, - textScaleFactor: 1.3, - ), + child: BeaconCustomWidgets + .getPlaceholder(), ); } + }, + ), + ), + Container( + alignment: Alignment.center, + child: FutureBuilder( + future: databaseFunctions + .fetchNearbyBeacon(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error.toString(), + textAlign: + TextAlign.center, + textScaleFactor: 1.3, + ), + ); + } - final posts = snapshot.data; - if (posts == null || - posts.length == 0) { + final posts = snapshot.data; + if (posts == null || + posts.length == 0) { + return SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Center( + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 20), + ), + ), + ); + } + return ListView.builder( + physics: + AlwaysScrollableScrollPhysics(), + scrollDirection: + Axis.vertical, + itemCount: posts.length, + padding: EdgeInsets.all(8), + itemBuilder: + (context, index) { + return BeaconCustomWidgets + .getBeaconCard(context, + posts[index]); + }, + ); + } else { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 20), - ), - ), + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 18))), ); } - return ListView.builder( - physics: - AlwaysScrollableScrollPhysics(), - scrollDirection: Axis.vertical, - itemCount: posts.length, - padding: EdgeInsets.all(8), - itemBuilder: (context, index) { - return BeaconCustomWidgets - .getBeaconCard(context, - posts[index]); - }, - ); - } else { - return SingleChildScrollView( - physics: - AlwaysScrollableScrollPhysics(), - child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 18))), - ); - } - }, + }, + ), ), - ), - ], + ], + ), ), - ), - ], + ], + ), ), - ), - ], - ), - ], + ], + ), + ], + ), ), ), - ), - ); - }); + ); + }), + ); } } From eb22e9b88253685887547e632436dd3e6894ecf3 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 17 Jan 2022 21:07:04 +0530 Subject: [PATCH 028/122] removed predefined beacon card height (#68) --- lib/components/beacon_card.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index fe671e6..c7d7690 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -40,7 +40,6 @@ class BeaconCustomWidgets { vertical: 10.0, horizontal: 10.0, ), - height: 110, padding: EdgeInsets.only(left: 16.0, right: 16.0, bottom: 8, top: 8), child: Column( mainAxisAlignment: MainAxisAlignment.center, From dfea8e45e805d4e7cbf4ccabec324d075506bdd6 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 17 Jan 2022 21:08:32 +0530 Subject: [PATCH 029/122] changed eye icon for password obscuring (#66) --- lib/views/auth_screen.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index f9a2336..168fe50 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -268,8 +268,8 @@ class _AuthScreenState extends State onPressed: () => model.displayPasswordLogin(), icon: Icon( model.obscureTextLogin - ? Icons.remove_red_eye_sharp - : Icons.remove_red_eye_outlined, + ? Icons.visibility + : Icons.visibility_off, size: 20.0, color: Colors.black, ), @@ -418,8 +418,8 @@ class _AuthScreenState extends State onPressed: () => model.displayPasswordSignup(), icon: Icon( model.obscureTextSignup - ? Icons.remove_red_eye_sharp - : Icons.remove_red_eye_outlined, + ? Icons.visibility + : Icons.visibility_off, size: 20.0, color: Colors.black, ), From 964f385d269e93ca3660073ef24cd8b8172557e7 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 17 Jan 2022 21:16:09 +0530 Subject: [PATCH 030/122] Added validator for Name field while signing up (#64) --- lib/services/validators.dart | 7 +++++++ lib/views/auth_screen.dart | 1 + 2 files changed, 8 insertions(+) diff --git a/lib/services/validators.dart b/lib/services/validators.dart index 253e86f..a89567a 100644 --- a/lib/services/validators.dart +++ b/lib/services/validators.dart @@ -1,4 +1,11 @@ class Validator { + static String validateName(String name) { + if (name.isEmpty) { + return "Name must not be left blank"; + } + return null; + } + static String validateEmail(String email) { // If email is empty return. if (email.isEmpty) { diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 168fe50..5eb67f3 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -340,6 +340,7 @@ class _AuthScreenState extends State horizontal: 10, vertical: 10.0), child: TextFormField( autovalidateMode: model.signupValidate, + validator: (value) => Validator.validateName(value), focusNode: model.name, textInputAction: TextInputAction.next, controller: model.signupNameController, From f3273f783e6e45346f548334897cd5e3fed7a8ba Mon Sep 17 00:00:00 2001 From: Devansh Mishra <79010144+devansh12b2@users.noreply.github.com> Date: Fri, 21 Jan 2022 20:44:43 +0530 Subject: [PATCH 031/122] Feat: Added feature to preschedule a beacon + added local notifications at the start of prescheduled beacon (#53) * added github ci actions * required changes * Update README.md * Update README.md * Update README.md * Update README.md * Update shared_preference_service.dart * prescheduling and local notifications at the time of start added * fix * ui issue fix * required changes done * formatting Co-authored-by: Nishtha Bodani --- .../app/src/main/res/drawable/app_icon.png | Bin 0 -> 15911 bytes lib/components/beacon_card.dart | 20 +- lib/components/create_join_dialog.dart | 286 ++++++++++++------ lib/locator.dart | 5 + lib/main.dart | 1 + lib/queries/beacon.dart | 14 +- lib/services/database_mutation_functions.dart | 4 +- lib/services/local_notification.dart | 74 +++++ lib/services/validators.dart | 8 + lib/utilities/constants.dart | 4 +- lib/view_model/home_view_model.dart | 52 +++- lib/views/hike_screen.dart | 6 +- pubspec.lock | 26 +- pubspec.yaml | 4 +- 14 files changed, 386 insertions(+), 118 deletions(-) create mode 100644 android/app/src/main/res/drawable/app_icon.png create mode 100644 lib/services/local_notification.dart diff --git a/android/app/src/main/res/drawable/app_icon.png b/android/app/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f87e14bdee3b69620f2ac315f971bae2926760 GIT binary patch literal 15911 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 Dialog( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0), ), - child: Form( - key: model.formKeyCreate, - child: Container( - height: 48.h, - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - height: 14.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: TextFormField( - style: TextStyle(fontSize: 22.0), - validator: (value) => - Validator.validateBeaconTitle(value), - onChanged: (name) { - model.title = name; - }, - decoration: InputDecoration( - hintText: 'Enter Title Here', - labelStyle: - TextStyle(fontSize: labelsize, color: kYellow), - hintStyle: - TextStyle(fontSize: hintsize, color: hintColor), - labelText: 'Title', - alignLabelWithHint: true, - floatingLabelBehavior: FloatingLabelBehavior.always, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Container( - height: 14.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: InkWell( - onTap: () async { - model.resultingDuration = await showDurationPicker( - context: context, - initialTime: model.resultingDuration != null - ? model.resultingDuration - : Duration(minutes: 30), - ); - model.durationController.text = model - .resultingDuration - .toString() - .substring(0, 8); - }, + child: SingleChildScrollView( + child: Form( + key: model.formKeyCreate, + child: Container( + height: 65.h, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + height: 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), child: TextFormField( - style: TextStyle(fontSize: 20.0), - enabled: false, - controller: model.durationController, - onChanged: (value) { - model.durationController.text = model - .resultingDuration - .toString() - .substring(0, 8); - }, + style: TextStyle(fontSize: 22.0), validator: (value) => - Validator.validateDuration(value.toString()), + Validator.validateBeaconTitle(value), + onChanged: (name) { + model.title = name; + }, decoration: InputDecoration( + hintText: 'Enter Title Here', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + labelText: 'Title', + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior.always, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Container( + height: 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + model.startingdate = await showDatePicker( + context: context, + initialDate: DateTime.now(), + firstDate: DateTime.now(), + lastDate: DateTime(2100), + ); + model.startsAtDate.text = + model.startingdate.toString().substring(0, 10); + }, + child: TextFormField( + enabled: false, + controller: model.startsAtDate, + onChanged: (value) { + model.startsAtDate.text = model.startingdate + .toString() + .substring(0, 10); + }, + decoration: InputDecoration( alignLabelWithHint: true, errorStyle: TextStyle(color: Colors.red[800]), floatingLabelBehavior: FloatingLabelBehavior.always, - labelText: 'Duration', + labelText: 'Start Date', labelStyle: TextStyle( fontSize: labelsize, color: kYellow), hintStyle: TextStyle( fontSize: hintsize, color: hintColor), - hintText: 'Select duration of beacon', - border: InputBorder.none, + hintText: 'Choose start date', focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), + enabledBorder: InputBorder.none, + ), + ), ), ), + color: kLightBlue, ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Flexible( - flex: 2, - child: HikeButton( - buttonWidth: optbwidth, - buttonHeight: optbheight, - text: 'Create', - textSize: 18.0, - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - // navigationService.pop(); - model.createHikeRoom(); - }, + SizedBox( + height: 2.h, ), - ), - ], + Container( + height: 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + model.startingTime = await showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ); + model.startsAtTime.text = + model.startingTime.toString().substring(10, 15); + }, + child: TextFormField( + enabled: false, + controller: model.startsAtTime, + onChanged: (value) { + model.startsAtTime.text = model.startingTime + .toString() + .substring(10, 15); + }, + decoration: InputDecoration( + alignLabelWithHint: true, + errorStyle: TextStyle(color: Colors.red[800]), + floatingLabelBehavior: + FloatingLabelBehavior.always, + labelText: 'Start Time', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + hintText: 'Choose start time', + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + ), + ), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Container( + height: 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + model.resultingDuration = await showDurationPicker( + context: context, + initialTime: model.resultingDuration != null + ? model.resultingDuration + : Duration(minutes: 30), + ); + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + child: TextFormField( + enabled: false, + controller: model.durationController, + onChanged: (value) { + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + validator: (value) => + Validator.validateDuration(value.toString()), + decoration: InputDecoration( + alignLabelWithHint: true, + errorStyle: TextStyle(color: Colors.red[800]), + floatingLabelBehavior: + FloatingLabelBehavior.always, + labelText: 'Duration', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + hintText: 'How long should beacon last for?', + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), + ), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + flex: 2, + child: HikeButton( + buttonWidth: optbwidth, + buttonHeight: optbheight, + textSize: 18.0, + text: 'Create', + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + // navigationService.pop(); + if (model.startingdate == null || + model.startingTime == null) { + navigationService + .showSnackBar("Enter date and time"); + return; + } + model.startsAt = DateTime( + model.startingdate.year, + model.startingdate.month, + model.startingdate.day, + model.startingTime.hour, + model.startingTime.minute, + ); + // localNotif.scheduleNotification(); + if (model.startsAt.isBefore(DateTime.now())) { + navigationService.showSnackBar( + "Enter a valid date and time!!"); + return; + } + model.createHikeRoom(); + }), + ), + ], + ), ), ), ), diff --git a/lib/locator.dart b/lib/locator.dart index bb53913..0d6bb09 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -1,6 +1,7 @@ import 'package:beacon/main.dart'; import 'package:beacon/services/database_mutation_functions.dart'; import 'package:beacon/services/graphql_config.dart'; +import 'package:beacon/services/local_notification.dart'; import 'package:beacon/services/navigation_service.dart'; import 'package:beacon/services/user_config.dart'; import 'package:beacon/view_model/auth_screen_model.dart'; @@ -13,6 +14,7 @@ final userConfig = locator(); final navigationService = locator(); final databaseFunctions = locator(); final graphqlConfig = locator(); +final localNotif = locator(); void setupLocator() { //services @@ -29,4 +31,7 @@ void setupLocator() { locator.registerFactory(() => AuthViewModel()); locator.registerFactory(() => HomeViewModel()); locator.registerFactory(() => HikeScreenViewModel()); + + //local Notification + locator.registerSingleton(LocalNotification()); } diff --git a/lib/main.dart b/lib/main.dart index 0fc0067..ac93f25 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -32,6 +32,7 @@ void main() async { await Hive.openBox('currentUser'); await Hive.openBox('beacons'); setupLocator(); + localNotif.initialize(); runApp( OverlaySupport( child: Sizer( diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index b052186..33f230a 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -1,11 +1,13 @@ import 'package:graphql_flutter/graphql_flutter.dart'; class BeaconQueries { - String createBeacon(String title, int expiresAt, String lat, String lon) { + String createBeacon( + String title, int startsAt, int expiresAt, String lat, String lon) { return ''' mutation{ createBeacon(beacon: { - title: "$title", + title: "$title", + startsAt: $startsAt, expiresAt: $expiresAt, startLocation: { lat: "$lat", lon: "$lon" @@ -59,9 +61,9 @@ class BeaconQueries { mutation{ createLandmark( landmark: { - title: "$title", + title: "$title", location: { - lat:"$lat", + lat:"$lat", lon:"$lon" } } @@ -204,9 +206,9 @@ class BeaconQueries { mutation{ createLandmark( landmark:{ - location:{lat:"$lat", lon:"$lon"}, + location:{lat:"$lat", lon:"$lon"}, title:"$title" - }, + }, beaconID:"$id") { title diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 57fc96e..ed45c28 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -212,7 +212,7 @@ class DataBaseMutationFunctions { return beacons; } - Future createBeacon(String title, int expiresAt) async { + Future createBeacon(String title, int startsAt, int expiresAt) async { LatLng loc; try { loc = await AppConstants.getLocation(); @@ -222,7 +222,7 @@ class DataBaseMutationFunctions { return null; } final QueryResult result = await clientAuth.mutate(MutationOptions( - document: gql(_beaconQuery.createBeacon(title, expiresAt, + document: gql(_beaconQuery.createBeacon(title, startsAt, expiresAt, loc.latitude.toString(), loc.longitude.toString())))); if (result.hasException) { navigationService.showSnackBar( diff --git a/lib/services/local_notification.dart b/lib/services/local_notification.dart new file mode 100644 index 0000000..18fff71 --- /dev/null +++ b/lib/services/local_notification.dart @@ -0,0 +1,74 @@ +import 'package:beacon/locator.dart'; +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/views/hike_screen.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:timezone/timezone.dart' as tz; +import 'package:timezone/data/latest.dart' as tz; + +class LocalNotification { + static FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + +// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project + Future initialize() async { + const AndroidInitializationSettings initializationSettingsAndroid = + AndroidInitializationSettings('app_icon'); + final IOSInitializationSettings initializationSettingsIOS = + IOSInitializationSettings( + onDidReceiveLocalNotification: (_, __, ___, ____) {}); + final InitializationSettings initializationSettings = + InitializationSettings( + android: initializationSettingsAndroid, + iOS: initializationSettingsIOS, + ); + tz.initializeTimeZones(); // <---- + + await flutterLocalNotificationsPlugin.initialize( + initializationSettings, + onSelectNotification: (payload) => onSelectNotification(payload), + ); + } + + Future onSelectNotification(String payload) async { + if (payload != null) { + Beacon beacon = await databaseFunctions.fetchBeaconInfo(payload); + bool isLeader = beacon.leader.id == userConfig.currentUser.id; + navigationService.pushScreen('/hikeScreen', + arguments: HikeScreen(beacon, isLeader: isLeader)); + } + return; + } + + Future deleteNotification() async { + await flutterLocalNotificationsPlugin.cancelAll(); + } + + Future scheduleNotification(Beacon beacon) async { + await flutterLocalNotificationsPlugin.zonedSchedule( + beacon.id.hashCode, + beacon.title + ' starting soon', + 'Join !!!', + tz.TZDateTime.from( + DateTime.fromMillisecondsSinceEpoch(beacon.startsAt), tz.local), + NotificationDetails( + android: AndroidNotificationDetails( + 'channel ID', + 'channel name', + playSound: true, + priority: Priority.high, + importance: Importance.high, + ), + iOS: IOSNotificationDetails( + presentAlert: true, + presentBadge: true, + presentSound: true, + badgeNumber: 1, + ), + ), + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + androidAllowWhileIdle: true, + payload: beacon.id, + ); + } +} diff --git a/lib/services/validators.dart b/lib/services/validators.dart index a89567a..ad0df32 100644 --- a/lib/services/validators.dart +++ b/lib/services/validators.dart @@ -69,4 +69,12 @@ class Validator { } return null; } + + static String validateStartingTime(String startTime) { + print(startTime); + if (startTime == null) { + return "Enter the valid Time"; + } + return null; + } } diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index d282e00..0a90553 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -18,8 +18,8 @@ final double labelsize = 20; final double hintsize = 18; final double homebheight = 4.45.h; final double homebwidth = 3.w; -final double optbheight = 3.5.h; -final double optbwidth = 8.w; +final double optbheight = 3.h; +final double optbwidth = 6.w; class AppConstants { static Future getLocation() async { diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 1bcb1f0..64f9243 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -4,17 +4,24 @@ import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/view_model/base_view_model.dart'; import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; class HomeViewModel extends BaseModel { final formKeyCreate = GlobalKey(); final formKeyJoin = GlobalKey(); Duration resultingDuration = Duration(minutes: 30); AutovalidateMode validate = AutovalidateMode.onUserInteraction; + DateTime startsAt; + DateTime startingdate; + TimeOfDay startingTime; bool isCreatingHike = false; String title; + bool hasStarted; //commenting out since its value isnt used anywhere. //TextEditingController _titleController = new TextEditingController(); TextEditingController durationController = new TextEditingController(); + TextEditingController startsAtDate = new TextEditingController(); + TextEditingController startsAtTime = new TextEditingController(); String enteredPasskey = ''; createHikeRoom() async { @@ -25,15 +32,29 @@ class HomeViewModel extends BaseModel { setState(ViewState.busy); validate = AutovalidateMode.disabled; databaseFunctions.init(); - final Beacon beacon = await databaseFunctions.createBeacon(title, - DateTime.now().add(resultingDuration).millisecondsSinceEpoch.toInt()); + final Beacon beacon = await databaseFunctions.createBeacon( + title, + startsAt.millisecondsSinceEpoch.toInt(), + startsAt.add(resultingDuration).millisecondsSinceEpoch.toInt(), + ); // setState(ViewState.idle); if (beacon != null) { - navigationService.pushScreen('/hikeScreen', - arguments: HikeScreen( - beacon, - isLeader: true, - )); + hasStarted = DateTime.now() + .isAfter(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)); + if (hasStarted) { + navigationService.pushScreen('/hikeScreen', + arguments: HikeScreen( + beacon, + isLeader: true, + )); + } else { + localNotif.scheduleNotification(beacon); + setState(ViewState.idle); + navigationService.showSnackBar( + 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + ); + return; + } } else { // navigationService.showSnackBar('Something went wrong'); setState(ViewState.idle); @@ -51,8 +72,20 @@ class HomeViewModel extends BaseModel { final Beacon beacon = await databaseFunctions.joinBeacon(enteredPasskey); // setState(ViewState.idle); if (beacon != null) { - navigationService.pushScreen('/hikeScreen', - arguments: HikeScreen(beacon, isLeader: false)); + hasStarted = DateTime.now() + .isAfter(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)); + + if (hasStarted) { + navigationService.pushScreen('/hikeScreen', + arguments: HikeScreen(beacon, isLeader: false)); + } else { + localNotif.scheduleNotification(beacon); + setState(ViewState.idle); + navigationService.showSnackBar( + 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + ); + return; + } } else { //there was some error, go back to homescreen. setState(ViewState.idle); @@ -67,6 +100,7 @@ class HomeViewModel extends BaseModel { setState(ViewState.busy); await userConfig.currentUser.delete(); // setState(ViewState.idle); + await localNotif.deleteNotification(); navigationService.removeAllAndPush('/auth', '/'); } } diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 79238bc..23ddbfd 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -55,6 +55,7 @@ class _HikeScreenState extends State { GraphQLClient graphQlClient; PanelController _panelController = PanelController(); final List mergedStreamSubscriptions = []; + bool hasStarted; void updatePinOnMap(LatLng loc) async { CameraPosition cPosition = CameraPosition( @@ -206,7 +207,7 @@ class _HikeScreenState extends State { @override void dispose() { - if (widget.isLeader && !isBeaconExpired) { + if (widget.isLeader && !isBeaconExpired && hasStarted) { _leaderLocation.cancel(); } if (!isBeaconExpired) @@ -305,6 +306,8 @@ class _HikeScreenState extends State { @override void initState() { super.initState(); + hasStarted = DateTime.now() + .isAfter(DateTime.fromMillisecondsSinceEpoch(widget.beacon.startsAt)); isBusy = true; beacon = widget.beacon; fetchData(); @@ -318,6 +321,7 @@ class _HikeScreenState extends State { Widget build(BuildContext context) { screenHeight = MediaQuery.of(context).size.height; screenWidth = MediaQuery.of(context).size.width; + return isBusy ? CircularProgressIndicator() : WillPopScope( diff --git a/pubspec.lock b/pubspec.lock index eb6cc13..af6b94e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -161,7 +161,7 @@ packages: name: connectivity_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.1.1" connectivity_plus_macos: dependency: transitive description: @@ -175,7 +175,7 @@ packages: name: connectivity_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.1.1" connectivity_plus_web: dependency: transitive description: @@ -231,7 +231,7 @@ packages: name: dbus url: "https://pub.dartlang.org" source: hosted - version: "0.5.2" + version: "0.6.6" duration_picker: dependency: "direct main" description: @@ -299,14 +299,21 @@ packages: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "8.1.1+1" + version: "9.2.0" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.1+1" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "5.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -611,6 +618,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + nm: + dependency: transitive + description: + name: nm + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.2" normalize: dependency: transitive description: @@ -902,7 +916,7 @@ packages: name: timezone url: "https://pub.dartlang.org" source: hosted - version: "0.7.0" + version: "0.8.0" timing: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3f7ac2e..b81ad98 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,7 +32,7 @@ dependencies: location: ^4.3.0 rxdart: ^0.26.0 flutter_polyline_points: ^1.0.0 - flutter_local_notifications: ^8.1.1+1 + flutter_local_notifications: ^9.2.0 overlay_support: ^1.2.1 sliding_up_panel: ^2.0.0+1 skeleton_text: ^1.0.0 @@ -46,7 +46,7 @@ dev_dependencies: hive_generator: ^1.1.0 build_runner: ^2.0.4 flutter_launcher_icons: "^0.9.1" - + flutter_icons: android: "launcher_icon" From 06162f8001f9048ca7d45e0911110cf85a2e1a1e Mon Sep 17 00:00:00 2001 From: ItsAdityaKSingh Date: Thu, 20 Jan 2022 00:37:57 +0530 Subject: [PATCH 032/122] added constants --- lib/utilities/constants.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index 0a90553..b21a015 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -83,3 +83,7 @@ class Style { static final headerTextStyle = baseTextStyle.copyWith( color: Colors.white, fontSize: 20.0, fontWeight: FontWeight.w400); } + +const String exceptionError = "Exception Errors"; +const String otherError = "Other Errors"; +const String logSuccess = "Successful Login"; From 956d9605a95b381c710bd6b9b94bcc6fa62f3573 Mon Sep 17 00:00:00 2001 From: ItsAdityaKSingh Date: Thu, 20 Jan 2022 00:38:07 +0530 Subject: [PATCH 033/122] changed bool to string --- lib/services/database_mutation_functions.dart | 21 ++++++++++++------- lib/view_model/auth_screen_model.dart | 17 ++++++++------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index ed45c28..79a7347 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -89,30 +89,32 @@ class DataBaseMutationFunctions { return result.data; } - Future signup({String name, String email, String password}) async { + Future signup({String name, String email, String password}) async { final QueryResult result = email != null ? await clientNonAuth.mutate(MutationOptions( document: gql(_authQuery.registerUser(name, email, password)))) : await clientNonAuth.mutate( MutationOptions(document: gql(_authQuery.loginAsGuest(name)))); if (result.hasException) { + navigationService + .showSnackBar("${result.exception.graphqlErrors.first.message}"); //commenting this since value of exception wasnt used. //final bool exception = encounteredExceptionOrError(result.exception); debugPrint('${result.exception.graphqlErrors}'); - return false; + return exceptionError; } else if (result.data != null && result.isConcrete) { final User signedInUser = User.fromJson(result.data['register'] as Map); - final bool logIn = email != null + final String logIn = email != null ? await databaseFunctions.login( email: email, password: password, user: signedInUser) : await databaseFunctions.login(user: signedInUser); return logIn; } - return false; + return otherError; } - Future login({String email, String password, User user}) async { + Future login({String email, String password, User user}) async { final QueryResult result = (email == null) ? await clientNonAuth.mutate( MutationOptions(document: gql(_authQuery.loginUsingID(user.id)))) @@ -122,7 +124,7 @@ class DataBaseMutationFunctions { navigationService .showSnackBar("${result.exception.graphqlErrors.first.message}"); print("${result.exception.graphqlErrors}"); - return false; + return exceptionError; } else if (result.data != null && result.isConcrete) { bool userSaved = false; if (email == null) { @@ -135,9 +137,12 @@ class DataBaseMutationFunctions { userSaved = await userConfig.updateUser(loggedInUser); } final bool fetchInfo = await databaseFunctions.fetchCurrentUserInfo(); - return userSaved && fetchInfo; + if (userSaved && fetchInfo) + return logSuccess; + else + return otherError; } - return false; + return otherError; } Future fetchCurrentUserInfo() async { diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 4fec5fd..47b7c27 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -44,13 +44,15 @@ class AuthViewModel extends BaseModel { setState(ViewState.busy); signupValidate = AutovalidateMode.disabled; databaseFunctions.init(); - final bool signUpSuccess = await databaseFunctions.signup( + final String signUpSuccess = await databaseFunctions.signup( name: signupNameController.text ?? "Anonymous", email: signupEmailController.text, password: signupPasswordController.text); - if (signUpSuccess) { + if (signUpSuccess == logSuccess) { userConfig.currentUser.print(); navigationService.removeAllAndPush('/main', '/'); + } else if (signUpSuccess == exceptionError) { + navigationService.removeAllAndPush('/auth', '/'); } else { navigationService.removeAllAndPush('/auth', '/'); navigationService.showSnackBar('Something went wrong'); @@ -64,11 +66,10 @@ class AuthViewModel extends BaseModel { loginAsGuest() async { setState(ViewState.busy); await databaseFunctions.init(); - final bool signUpSuccess = + final String signUpSuccess = await databaseFunctions.signup(name: "Anonymous"); - if (signUpSuccess) { + if (signUpSuccess == logSuccess) { userConfig.currentUser.print(); - navigationService.removeAllAndPush('/main', '/'); } else { navigationService.removeAllAndPush('/auth', '/'); @@ -84,12 +85,14 @@ class AuthViewModel extends BaseModel { setState(ViewState.busy); loginValidate = AutovalidateMode.disabled; await databaseFunctions.init(); - final bool loginSuccess = await databaseFunctions.login( + final String loginSuccess = await databaseFunctions.login( email: loginEmailController.text, password: loginPasswordController.text); - if (loginSuccess) { + if (loginSuccess == logSuccess) { userConfig.currentUser.print(); navigationService.removeAllAndPush('/main', '/'); + } else if (loginSuccess == exceptionError) { + navigationService.removeAllAndPush('/auth', '/'); } else { navigationService.removeAllAndPush('/auth', '/'); navigationService.showSnackBar('Something went wrong'); From f4e460954b3e764684553cd8d7944354f481c9d5 Mon Sep 17 00:00:00 2001 From: ItsAdityaKSingh Date: Thu, 20 Jan 2022 00:41:11 +0530 Subject: [PATCH 034/122] constant file changes --- lib/utilities/constants.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index b21a015..2ecb6eb 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -21,6 +21,11 @@ final double homebwidth = 3.w; final double optbheight = 3.h; final double optbwidth = 6.w; +// GraphQL Registering Errors +const String exceptionError = "Exception Errors"; +const String otherError = "Other Errors"; +const String logSuccess = "Successful Login"; + class AppConstants { static Future getLocation() async { bool serviceEnabled; @@ -83,7 +88,3 @@ class Style { static final headerTextStyle = baseTextStyle.copyWith( color: Colors.white, fontSize: 20.0, fontWeight: FontWeight.w400); } - -const String exceptionError = "Exception Errors"; -const String otherError = "Other Errors"; -const String logSuccess = "Successful Login"; From cab51df2a3ec6b0f82fa5fa3d9945e14799837ca Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Sun, 23 Jan 2022 17:45:06 +0530 Subject: [PATCH 035/122] [Feat + rfrac]Hike screen updated to follow Stacked MVVM architecture + share route if beacon is active + camera autozooms to necessary map surface. (#62) * Migrated Share to Share plus, since share is deprecated. * Update pubspec.yaml * Feat: Share route functionality. * Feat: Camera auto zoom's to only the required area on map. * Ran flutter format . * Added HikeScreen widgets to components. * HIKESCREEN now follows MVVM stacked arch. * fix: leaderloc is now added to route list. * fix: share button is visible now. --- lib/components/hike_screen_widget.dart | 258 +++++++- lib/view_model/hike_screen_model.dart | 375 +++++++++++- lib/views/hike_screen.dart | 812 +++++-------------------- pubspec.lock | 107 +++- pubspec.yaml | 2 +- 5 files changed, 872 insertions(+), 682 deletions(-) diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index e9f3117..1281e59 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -1,10 +1,21 @@ +import 'dart:async'; +import 'dart:io'; + import 'package:beacon/components/hike_button.dart'; import 'package:beacon/locator.dart'; +import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/utilities/constants.dart'; +import 'package:beacon/view_model/hike_screen_model.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:fluttertoast/fluttertoast.dart'; -import 'package:share/share.dart'; + +import 'package:geocoder/geocoder.dart'; +import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:intl/intl.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:share_plus/share_plus.dart'; + import 'package:sizer/sizer.dart'; class HikeScreenWidget { @@ -86,4 +97,249 @@ class HikeScreenWidget { child: Icon(Icons.person_add), ); } + + static Widget shareRouteButton( + BuildContext context, + Beacon beacon, + Completer googleMapControllerCompleter, + List beaconRoute, + ) { + return FloatingActionButton( + heroTag: + 'shareRouteTag', //had to pass this tag else we would get error since there will be two FAB in the same subtree with the same tag. + onPressed: () async { + final mapController = await googleMapControllerCompleter.future; + // sanity check. + if (mapController == null || + googleMapControllerCompleter.isCompleted == false) return; + //show marker description so that image will be more usefull. + await mapController.showMarkerInfoWindow(MarkerId("1")); + //getting the image (ss) of map. + final image = await mapController.takeSnapshot(); + // getting the app directory + final appDir = await getApplicationDocumentsDirectory(); + // Creating a file for the image. + File imageFile = await File('${appDir.path}/shareImage.png').create(); + //writing the image to the file we just created so that it can be shared. + imageFile.writeAsBytesSync(image); + // initial coordinates + Coordinates coordinates = Coordinates( + beaconRoute.first.latitude, + beaconRoute.first.longitude, + ); + // initial address + var initialAddress = + await Geocoder.local.findAddressesFromCoordinates(coordinates); + //current coordinates + coordinates = Coordinates( + beaconRoute.last.latitude, + beaconRoute.last.longitude, + ); + //current address + var currentAddress = + await Geocoder.local.findAddressesFromCoordinates(coordinates); + // All the neccessary info should be here. + String textToShare = + "${beacon.title} Beacon started at: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()} from: ${initialAddress.first.addressLine}.\n\nIt will end on: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}.\n\nBeacon's current location is: ${currentAddress.first.addressLine}.\n\nBeacon's current leader is: ${beacon.leader.name}.\n\nTo join this beacon, enter this code in the app: ${beacon.shortcode}.\nYou can also join the beacon by clicking the following link: https://beacon.aadibajpai.com/?shortcode=${beacon.shortcode}"; + //Will be used as subject if shared via email, else isnt used. + String subjectToShare = "${beacon.title} beacons's route"; + await Share.shareFiles([imageFile.path], + text: textToShare, subject: subjectToShare); + //hide after sharing. + await mapController.hideMarkerInfoWindow(MarkerId("1")); + return; + }, + backgroundColor: kYellow, + child: Icon( + Icons.share, + ), + ); + } + + static Column panel(ScrollController sc, HikeScreenViewModel model, + BuildContext context, bool isLeader) { + return Column(children: [ + SizedBox( + height: 15.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 60, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all(Radius.circular(12.0))), + ), + ], + ), + SizedBox( + height: 12, + ), + Container( + height: MediaQuery.of(context).size.height * 0.6 - 32, + child: ListView( + controller: sc, + physics: AlwaysScrollableScrollPhysics(), + children: [ + isLeader + ? Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: RichText( + text: TextSpan( + style: TextStyle( + fontWeight: FontWeight.bold, color: kBlack), + children: [ + TextSpan( + text: + 'Long Press on any hiker to hand over the beacon\n', + style: TextStyle(fontSize: 16)), + //TODO: enable this once backend has updated. + //Commented, since we dont have the neccessary mutation atm on backend to change the duration. + // TextSpan( + // text: + // 'Double tap on beacon to change the duration\n', + // style: TextStyle(fontSize: 14)), + ]), + ), + ) + : Container(), + SizedBox( + height: 6, + ), + Material( + child: ListView.builder( + shrinkWrap: true, + clipBehavior: Clip.antiAlias, + scrollDirection: Axis.vertical, + physics: const NeverScrollableScrollPhysics(), + itemCount: model.hikers.length, + itemBuilder: (BuildContext context, int index) { + return ListTile( + onTap: () { + model.hikers[index].id == userConfig.currentUser.id + ? Fluttertoast.showToast(msg: 'Yeah, that\'s you') + : model.beacon.leader.id == + userConfig.currentUser.id + ? model.relayBeacon(model.hikers[index]) + : Fluttertoast.showToast( + msg: 'You dont have beacon to relay'); + }, + leading: CircleAvatar( + backgroundColor: + model.isBeaconExpired ? Colors.grey : kYellow, + radius: 18, + child: ClipRRect( + borderRadius: BorderRadius.circular(50), + child: Icon( + Icons.person_outline, + color: Colors.white, + )), + ), + title: Text( + model.hikers[index].name, + style: TextStyle(color: Colors.black, fontSize: 18), + ), + trailing: model.hikers[index].id == model.beacon.leader.id + ? GestureDetector( + onDoubleTap: () { + isLeader + ? Fluttertoast.showToast( + msg: + 'Only beacon holder has access to change the duration') + //TODO: enable this once backend has updated. + //Commented, since we dont have the neccessary mutation atm on backend to change the duration. + // : DialogBoxes.changeDurationDialog(context); + : Container(); + }, + child: Icon( + Icons.room, + color: model.isBeaconExpired + ? Colors.grey + : kYellow, + size: 40, + ), + ) + : Container(width: 10), + ); + }, + ), + ), + ]), + ), + ]); + } + + static void showCreateLandMarkDialogueDialog( + BuildContext context, + var landmarkFormKey, + var title, + var loc, + Future createLandmark(var landmarkTitle, var location), + ) { + showDialog( + context: context, + builder: (context) => Dialog( + child: Container( + height: 30.h, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Form( + key: landmarkFormKey, + child: Column( + children: [ + Container( + height: 12.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: TextFormField( + style: TextStyle(fontSize: 20.0), + onChanged: (key) { + title = key; + }, + validator: (value) { + if (value == null || value.isEmpty) { + return "Please enter title for landmark"; + } else { + return null; + } + }, + decoration: InputDecoration( + border: InputBorder.none, + alignLabelWithHint: true, + floatingLabelBehavior: FloatingLabelBehavior.always, + hintText: 'Add title for the landmark', + hintStyle: + TextStyle(fontSize: hintsize, color: hintColor), + labelText: 'Title', + labelStyle: + TextStyle(fontSize: labelsize, color: kYellow), + ), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + child: HikeButton( + buttonWidth: optbwidth, + buttonHeight: optbheight, + text: 'Create Landmark', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () => createLandmark(title, loc), + ), + ), + ], + ), + ), + ), + ), + ), + ); + } } diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index 8e650b2..0ba58aa 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -1,58 +1,343 @@ import 'dart:async'; -import 'package:beacon/models/location/location.dart'; +import 'package:beacon/components/dialog_boxes.dart'; +import 'package:beacon/locator.dart'; +import 'package:beacon/queries/beacon.dart'; +import 'package:beacon/services/graphql_config.dart'; +import 'package:beacon/utilities/constants.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_config/flutter_config.dart'; +import 'package:flutter_polyline_points/flutter_polyline_points.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:beacon/enums/view_state.dart'; -import 'package:share/share.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/models/user/user_info.dart'; import 'package:beacon/view_model/base_view_model.dart'; +import 'package:graphql_flutter/graphql_flutter.dart'; +import 'package:overlay_support/overlay_support.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:sliding_up_panel/sliding_up_panel.dart'; +import 'package:location/location.dart'; +import 'package:rxdart/rxdart.dart'; class HikeScreenViewModel extends BaseModel { - double screenHeight, screenWidth, lat, long; + bool modelIsReady = false; Beacon beacon; + Set followerId = {}; bool isGeneratingLink = false, isReferred, isBeaconExpired = false; List hikers = []; - List route = []; + List route = []; Duration newDuration = Duration(seconds: 0); Completer mapController = Completer(); - String address; - - Future createDynamicLink(bool short) async { - // setState(() { - // _isGeneratingLink = true; - // }); - } + String address, prevAddress; + bool isBusy = false; + Set markers = {}; + Set polylines = Set(); + StreamSubscription _leaderLocation; + Stream beaconLocationStream, beaconJoinedStream, mergedStream; + List polylineCoordinates = []; + PolylinePoints polylinePoints = PolylinePoints(); + final GlobalKey landmarkFormKey = GlobalKey(); + ScrollController scrollController = ScrollController(); + Location loc = new Location(); + GraphQLClient graphQlClient; + PanelController panelController = PanelController(); + final List mergedStreamSubscriptions = []; + bool isLeader = false; void relayBeacon(User newHolder) { Fluttertoast.showToast(msg: 'Beacon handed over to $newHolder'); } Future onWillPop(context) async { - // return (await showDialog( - // context: context, - // // builder: (context) => DialogBoxes.showExitDialog(context), - // )) ?? - // false; - return false; + return (await showDialog( + context: context, + builder: (context) => DialogBoxes.showExitDialog( + context, isLeader, hikers.length, isBeaconExpired), + )) ?? + false; } - void initialise(Beacon beaconParsed) async { - setState(ViewState.busy); - beacon = beaconParsed; - hikers.add(beacon.leader); - hikers.addAll(beacon.followers); - lat = double.parse(beacon.route.last.lat); - long = double.parse(beacon.route.last.lon); - route.add(Location(lat: beacon.route.last.lat, lon: beacon.route.last.lon)); - Coordinates coordinates = Coordinates(lat, long); + LatLngBounds calculateMapBoundsFromListOfLatLng(List pointsList, + {double padding = 0.0005}) { + double southWestLatitude = 90; + double southWestLongitude = 90; + double northEastLatitude = -180; + double northEastLongitude = -180; + pointsList.forEach((point) { + if (point.latitude < southWestLatitude) { + southWestLatitude = point.latitude; + } + if (point.longitude < southWestLongitude) { + southWestLongitude = point.longitude; + } + if (point.latitude > northEastLatitude) { + northEastLatitude = point.latitude; + } + if (point.longitude > northEastLongitude) { + northEastLongitude = point.longitude; + } + }); + southWestLatitude = southWestLatitude - padding; + southWestLongitude = southWestLongitude - padding; + northEastLatitude = northEastLatitude + padding; + northEastLongitude = northEastLongitude + padding; + LatLngBounds bound = LatLngBounds( + southwest: LatLng(southWestLatitude, southWestLongitude), + northeast: LatLng(northEastLatitude, northEastLongitude)); + return bound; + } + + Future setPolyline() async { + PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( + '${FlutterConfig.get('MAPS_API_KEY')}', // Google Maps API Key + PointLatLng(route.first.latitude, route.first.longitude), + PointLatLng(route.last.latitude, route.last.longitude), + ); + if (result.points.isNotEmpty) { + result.points.forEach((PointLatLng point) { + polylineCoordinates.add(LatLng(point.latitude, point.longitude)); + }); + } + + Polyline polyline = Polyline( + polylineId: PolylineId('poly'), + color: Colors.red, + points: polylineCoordinates, + width: 3, + ); + polylines.add(polyline); + } + + Future updatePinOnMap(LatLng loc) async { + CameraPosition cPosition = CameraPosition( + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING, + target: loc, + ); + final GoogleMapController controller = await mapController.future; + controller + .animateCamera(CameraUpdate.newCameraPosition(cPosition)) + .then((v) async { + CameraUpdate cameraUpdate = CameraUpdate.newLatLngBounds( + calculateMapBoundsFromListOfLatLng(route), 50); + controller.animateCamera(cameraUpdate); + }); + + var pinPosition = loc; + markers.removeWhere((m) => m.markerId.value == "1"); + markers.add(Marker( + markerId: MarkerId("1"), + position: pinPosition, // updated position + infoWindow: InfoWindow( + title: 'Current Location', + ), + )); + } + + Future fetchData() async { + Coordinates coordinates = Coordinates( + double.parse(beacon.location.lat), double.parse(beacon.location.lon)); var addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates); - address = addresses.first.addressLine; - setState(ViewState.idle); + await databaseFunctions.fetchBeaconInfo(beacon.id).then((value) { + beacon = value; + isBeaconExpired = DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now()); + hikers.add(value.leader); + for (var i in value.followers) { + if (!followerId.contains(i.id)) { + hikers.add(i); + followerId.add(i.id); + } + } + var lat = double.parse(value.location.lat); + var lon = double.parse(value.location.lon); + route.add(LatLng(lat, lon)); + address = addresses.first.addressLine; + markers.add(Marker( + markerId: MarkerId("0"), + position: route.first, + infoWindow: InfoWindow( + title: 'Initial Location', + ), + )); + markers.add(Marker( + markerId: MarkerId("1"), + position: route.last, + infoWindow: InfoWindow( + title: 'Current Location', + ), + )); + for (var i in value.landmarks) { + markers.add(Marker( + markerId: MarkerId((markers.length + 1).toString()), + position: LatLng( + double.parse(i.location.lat), double.parse(i.location.lon)), + infoWindow: InfoWindow( + title: '${i.title}', + ), + icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), + )); + } + // for (var i in value.followers) { + // markers.add(Marker( + // markerId: MarkerId((markers.length + 1).toString()), + // position: LatLng( + // double.parse(i.location.lat), double.parse(i.location.lon)), + // infoWindow: InfoWindow( + // title: '${i.name}', + // ), + // icon: BitmapDescriptor.defaultMarkerWithHue( + // BitmapDescriptor.hueYellow), + // )); + // } + //notifyListeners(); + }); + } + + Future setupSubscriptions(bool isExpired) async { + if (isBeaconExpired || isExpired) return; + if (isLeader) { + // distanceFilter (in m) can be changed to reduce the backend calls + await loc.changeSettings(interval: 3000, distanceFilter: 0.0); + _leaderLocation = loc.onLocationChanged.listen( + (LocationData currentLocation) async { + if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())) _leaderLocation.cancel(); + Coordinates coordinates = + Coordinates(currentLocation.latitude, currentLocation.longitude); + var addresses = + await Geocoder.local.findAddressesFromCoordinates(coordinates); + + String _address = addresses.first.addressLine; + if (address != _address) { + databaseFunctions.init(); + await databaseFunctions.updateLeaderLoc(beacon.id, + LatLng(currentLocation.latitude, currentLocation.longitude)); + address = _address; + route.add( + LatLng(currentLocation.latitude, currentLocation.longitude)); + updatePinOnMap( + LatLng(currentLocation.latitude, currentLocation.longitude)); + setPolyline(); + notifyListeners(); + } + }, + ); + } else { + beaconLocationStream = graphQlClient.subscribe( + SubscriptionOptions( + document: BeaconQueries().beaconLocationSubGql, + variables: { + 'id': beacon.id, + }, + ), + ); + } + + beaconJoinedStream = graphQlClient.subscribe( + SubscriptionOptions( + document: BeaconQueries().beaconJoinedSubGql, + variables: { + 'id': beacon.id, + }, + ), + ); + if (!isLeader) { + mergedStream = MergeStream([beaconLocationStream, beaconJoinedStream]); + } else { + mergedStream = beaconJoinedStream; + } + StreamSubscription mergeStreamSubscription; + mergeStreamSubscription = mergedStream.listen((event) async { + if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())) { + mergeStreamSubscription.cancel(); + isBeaconExpired = true; + notifyListeners(); + return; + } + if (event.data != null) { + print('${event.data}'); + if (event.data.containsKey('beaconJoined')) { + User newJoinee = User.fromJson(event.data['beaconJoined']); + + showOverlayNotification((context) { + return Card( + color: kLightBlue, + margin: const EdgeInsets.symmetric(horizontal: 4), + child: SafeArea( + child: ListTile( + leading: SizedBox.fromSize( + size: const Size(40, 40), + child: ClipOval( + child: Container( + child: + Image(image: AssetImage('images/male_avatar.png')), + ))), + title: Text('${newJoinee.name} joined the hike!'), + trailing: IconButton( + icon: Icon(Icons.close), + onPressed: () { + OverlaySupportEntry.of(context).dismiss(); + }), + ), + ), + ); + }, duration: Duration(milliseconds: 4000)); + + if (!followerId.contains(newJoinee.id)) { + hikers.add(newJoinee); + followerId.add(newJoinee.id); + } + // markers.add(Marker( + // markerId: MarkerId((markers.length + 1).toString()), + // position: LatLng(double.parse(newJoinee.location.lat), + // double.parse(newJoinee.location.lon)), + // infoWindow: InfoWindow( + // title: '${newJoinee.name}', + // ), + // icon: BitmapDescriptor.defaultMarkerWithHue( + // BitmapDescriptor.hueYellow), + // )); + notifyListeners(); + } + if (event.data.containsKey('beaconLocation')) { + LatLng coord = LatLng( + double.parse(event.data['beaconLocation']['lat']), + double.parse(event.data['beaconLocation']['lon'])); + var addresses = await Geocoder.local.findAddressesFromCoordinates( + Coordinates(coord.latitude, coord.longitude)); + + String _address = addresses.first.addressLine; + route.add(coord); + updatePinOnMap(coord); + address = _address; + // setPolyline(); + notifyListeners(); + } + } + }); + + mergedStreamSubscriptions.add(mergeStreamSubscription); + } + + Future initialise(Beacon beaconParsed, bool widgetIsLeader) async { + beacon = beaconParsed; + isLeader = widgetIsLeader; + await fetchData(); + graphQlClient = GraphQLConfig().graphQlClient(); + await setupSubscriptions( + DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())); + modelIsReady = true; + notifyListeners(); + // print("REBUITL" + modelIsReady.toString()); } void beaconExpired() { @@ -68,10 +353,44 @@ class HikeScreenViewModel extends BaseModel { // }); // } + void dispose() { + if (_leaderLocation != null) { + _leaderLocation.cancel(); + } + if (mergedStreamSubscriptions != null) + for (var streamSub in mergedStreamSubscriptions) { + if (streamSub != null) streamSub.cancel(); + } + super.dispose(); + } + generateUrl(String shortcode) async { setState(ViewState.busy); Uri url = Uri.parse('https://beacon.aadibajpai.com/?shortcode=$shortcode'); Share.share('To join beacon follow this link: $url'); setState(ViewState.idle); } + + Future createLandmark( + var title, + var loc, + ) async { + if (landmarkFormKey.currentState.validate()) { + navigationService.pop(); + await databaseFunctions.init(); + await databaseFunctions + .createLandmark(title, loc, beacon.id) + .then((value) { + markers.add(Marker( + markerId: MarkerId((markers.length + 1).toString()), + position: loc, + infoWindow: InfoWindow( + title: '$title', + ), + icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), + )); + notifyListeners(); + }); + } + } } diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 23ddbfd..5e35630 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,26 +1,19 @@ -import 'dart:async'; -import 'package:beacon/components/hike_button.dart'; -import 'package:beacon/queries/beacon.dart'; +import 'package:beacon/view_model/hike_screen_model.dart'; +import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_config/flutter_config.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:geocoder/geocoder.dart'; + import 'package:google_maps_flutter/google_maps_flutter.dart'; -import 'package:graphql_flutter/graphql_flutter.dart'; + import 'package:intl/intl.dart'; -import 'package:location/location.dart'; + import 'package:modal_progress_hud/modal_progress_hud.dart'; -import 'package:flutter_polyline_points/flutter_polyline_points.dart'; -import 'package:beacon/components/dialog_boxes.dart'; + import 'package:beacon/components/hike_screen_widget.dart'; import 'package:beacon/components/shape_painter.dart'; -import 'package:beacon/locator.dart'; import 'package:beacon/models/beacon/beacon.dart'; -import 'package:beacon/models/user/user_info.dart'; -import 'package:beacon/services/graphql_config.dart'; + import 'package:beacon/utilities/constants.dart'; -import 'package:overlay_support/overlay_support.dart'; -import 'package:rxdart/rxdart.dart'; + import 'package:sizer/sizer.dart'; import 'package:sliding_up_panel/sliding_up_panel.dart'; @@ -34,651 +27,182 @@ class HikeScreen extends StatefulWidget { class _HikeScreenState extends State { double screenHeight, screenWidth; - Beacon beacon; - Set followerId = {}; - bool isGeneratingLink = false, isReferred, isBeaconExpired = false; - List hikers = []; - List route = []; - Duration newDuration = Duration(seconds: 0); - Completer mapController = Completer(); - String address, prevAddress; - bool isBusy = false; - Set markers = {}; - Set _polylines = Set(); - StreamSubscription _leaderLocation; - Stream beaconLocationStream, beaconJoinedStream, mergedStream; - List polylineCoordinates = []; - PolylinePoints polylinePoints = PolylinePoints(); - final GlobalKey _landmarkFormKey = GlobalKey(); - ScrollController _scrollController = ScrollController(); - Location loc = new Location(); - GraphQLClient graphQlClient; - PanelController _panelController = PanelController(); - final List mergedStreamSubscriptions = []; - bool hasStarted; - - void updatePinOnMap(LatLng loc) async { - CameraPosition cPosition = CameraPosition( - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING, - target: loc, - ); - final GoogleMapController controller = await mapController.future; - controller.animateCamera(CameraUpdate.newCameraPosition(cPosition)); - setState(() { - var pinPosition = loc; - markers.removeWhere((m) => m.markerId.value == "1"); - markers.add(Marker( - markerId: MarkerId("1"), - position: pinPosition, // updated position - infoWindow: InfoWindow( - title: 'Current Location', - ), - )); - }); - } - - Future setupSubscriptions(bool isExpired) async { - if (isBeaconExpired || isExpired) return; - if (widget.isLeader) { - // distanceFilter (in m) can be changed to reduce the backend calls - await loc.changeSettings(interval: 3000, distanceFilter: 0.0); - _leaderLocation = - loc.onLocationChanged.listen((LocationData currentLocation) async { - if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now())) _leaderLocation.cancel(); - Coordinates coordinates = - Coordinates(currentLocation.latitude, currentLocation.longitude); - var addresses = - await Geocoder.local.findAddressesFromCoordinates(coordinates); - - String _address = addresses.first.addressLine; - if (address != _address) { - databaseFunctions.init(); - await databaseFunctions.updateLeaderLoc(widget.beacon.id, - LatLng(currentLocation.latitude, currentLocation.longitude)); - setState(() { - address = _address; - updatePinOnMap( - LatLng(currentLocation.latitude, currentLocation.longitude)); - setPolyline(); - }); - } - }); - } else { - beaconLocationStream = graphQlClient.subscribe( - SubscriptionOptions( - document: BeaconQueries().beaconLocationSubGql, - variables: { - 'id': widget.beacon.id, - }, - ), - ); - } - - beaconJoinedStream = graphQlClient.subscribe( - SubscriptionOptions( - document: BeaconQueries().beaconJoinedSubGql, - variables: { - 'id': widget.beacon.id, - }, - ), - ); - if (!widget.isLeader) { - mergedStream = MergeStream([beaconLocationStream, beaconJoinedStream]); - } else { - mergedStream = beaconJoinedStream; - } - StreamSubscription mergeStreamSubscription; - mergeStreamSubscription = mergedStream.listen((event) async { - if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now())) { - mergeStreamSubscription.cancel(); - setState(() { - isBeaconExpired = true; - }); - } - if (event.data != null) { - print('${event.data}'); - if (event.data.containsKey('beaconJoined')) { - User newJoinee = User.fromJson(event.data['beaconJoined']); - - showOverlayNotification((context) { - return Card( - color: kLightBlue, - margin: const EdgeInsets.symmetric(horizontal: 4), - child: SafeArea( - child: ListTile( - leading: SizedBox.fromSize( - size: const Size(40, 40), - child: ClipOval( - child: Container( - child: - Image(image: AssetImage('images/male_avatar.png')), - ))), - title: Text('${newJoinee.name} joined the hike!'), - trailing: IconButton( - icon: Icon(Icons.close), - onPressed: () { - OverlaySupportEntry.of(context).dismiss(); - }), - ), - ), - ); - }, duration: Duration(milliseconds: 4000)); - setState(() { - if (!followerId.contains(newJoinee.id)) { - hikers.add(newJoinee); - followerId.add(newJoinee.id); - } - // markers.add(Marker( - // markerId: MarkerId((markers.length + 1).toString()), - // position: LatLng(double.parse(newJoinee.location.lat), - // double.parse(newJoinee.location.lon)), - // infoWindow: InfoWindow( - // title: '${newJoinee.name}', - // ), - // icon: BitmapDescriptor.defaultMarkerWithHue( - // BitmapDescriptor.hueYellow), - // )); - }); - } - if (event.data.containsKey('beaconLocation')) { - LatLng coord = LatLng( - double.parse(event.data['beaconLocation']['lat']), - double.parse(event.data['beaconLocation']['lon'])); - var addresses = await Geocoder.local.findAddressesFromCoordinates( - Coordinates(coord.latitude, coord.longitude)); - - String _address = addresses.first.addressLine; - route.add(coord); - setState(() { - updatePinOnMap(coord); - address = _address; - // setPolyline(); - }); - } - } - }); - - mergedStreamSubscriptions.add(mergeStreamSubscription); - } - - @override - void dispose() { - if (widget.isLeader && !isBeaconExpired && hasStarted) { - _leaderLocation.cancel(); - } - if (!isBeaconExpired) - for (var streamSub in mergedStreamSubscriptions) { - streamSub.cancel(); - } - super.dispose(); - } - - setPolyline() async { - PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( - '${FlutterConfig.get('MAPS_API_KEY')}', // Google Maps API Key - PointLatLng(route.first.latitude, route.first.longitude), - PointLatLng(route.last.latitude, route.last.longitude), - ); - if (result.points.isNotEmpty) { - result.points.forEach((PointLatLng point) { - polylineCoordinates.add(LatLng(point.latitude, point.longitude)); - }); - } - setState(() { - Polyline polyline = Polyline( - polylineId: PolylineId('poly'), - color: Colors.red, - points: polylineCoordinates, - width: 3, - ); - _polylines.add(polyline); - }); - } - - fetchData() async { - Coordinates coordinates = Coordinates( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon)); - var addresses = - await Geocoder.local.findAddressesFromCoordinates(coordinates); - await databaseFunctions.fetchBeaconInfo(widget.beacon.id).then((value) { - beacon = value; - setState(() { - isBeaconExpired = DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now()); - hikers.add(value.leader); - for (var i in value.followers) { - if (!followerId.contains(i.id)) { - hikers.add(i); - followerId.add(i.id); - } - } - var lat = double.parse(value.location.lat); - var lon = double.parse(value.location.lon); - route.add(LatLng(lat, lon)); - address = addresses.first.addressLine; - markers.add(Marker( - markerId: MarkerId("0"), - position: route.first, - infoWindow: InfoWindow( - title: 'Initial Location', - ), - )); - markers.add(Marker( - markerId: MarkerId("1"), - position: route.last, - infoWindow: InfoWindow( - title: 'Current Location', - ), - )); - for (var i in value.landmarks) { - markers.add(Marker( - markerId: MarkerId((markers.length + 1).toString()), - position: LatLng( - double.parse(i.location.lat), double.parse(i.location.lon)), - infoWindow: InfoWindow( - title: '${i.title}', - ), - icon: - BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), - )); - } - // for (var i in value.followers) { - // markers.add(Marker( - // markerId: MarkerId((markers.length + 1).toString()), - // position: LatLng( - // double.parse(i.location.lat), double.parse(i.location.lon)), - // infoWindow: InfoWindow( - // title: '${i.name}', - // ), - // icon: BitmapDescriptor.defaultMarkerWithHue( - // BitmapDescriptor.hueYellow), - // )); - // } - }); - }); - } - - @override - void initState() { - super.initState(); - hasStarted = DateTime.now() - .isAfter(DateTime.fromMillisecondsSinceEpoch(widget.beacon.startsAt)); - isBusy = true; - beacon = widget.beacon; - fetchData(); - graphQlClient = GraphQLConfig().graphQlClient(); - setupSubscriptions(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now())); - isBusy = false; - } @override Widget build(BuildContext context) { screenHeight = MediaQuery.of(context).size.height; screenWidth = MediaQuery.of(context).size.width; - - return isBusy - ? CircularProgressIndicator() - : WillPopScope( - onWillPop: () => onWillPop(context), - child: Scaffold( - body: SafeArea( - child: ModalProgressHUD( - inAsyncCall: isGeneratingLink || isBusy, - child: SlidingUpPanel( - maxHeight: 60.h, - minHeight: 20.h, - controller: _panelController, - collapsed: Container( - decoration: BoxDecoration( - color: kBlue, - borderRadius: BorderRadius.only( - topRight: Radius.circular(10), - topLeft: Radius.circular(10))), - child: Column( - children: [ - SizedBox( - height: 1.5.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 65, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all( - Radius.circular(12.0))), - ), - ], - ), - SizedBox( - height: 1.5.h, - ), - Container( - width: double.infinity, - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 15), - child: RichText( - text: TextSpan( - style: TextStyle( - fontWeight: FontWeight.bold), - children: [ - TextSpan( - text: isBeaconExpired - ? 'Beacon has been expired\n' - : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', - style: TextStyle(fontSize: 18)), - TextSpan( - text: - 'Beacon holder at: $address\n', - style: TextStyle(fontSize: 14)), - TextSpan( - text: - 'Total Followers: ${hikers.length - 1} (Swipe up to view the list of followers)\n', - style: TextStyle(fontSize: 12)), - TextSpan( - text: isBeaconExpired - ? '' - : 'Share this passkey to add user: ${widget.beacon.shortcode}\n', - style: TextStyle(fontSize: 12)), - ]), - ), + return BaseView( + onModelReady: (m) { + m.initialise(widget.beacon, widget.isLeader); + }, + builder: (ctx, model, child) { + if (!model.modelIsReady) { + return Scaffold( + body: Center( + child: CircularProgressIndicator(), + ), + ); + } + return WillPopScope( + onWillPop: () => model.onWillPop(context), + child: Scaffold( + body: SafeArea( + child: ModalProgressHUD( + inAsyncCall: model.isGeneratingLink || model.isBusy, + child: SlidingUpPanel( + maxHeight: 60.h, + minHeight: 20.h, + controller: model.panelController, + collapsed: Container( + decoration: BoxDecoration( + color: kBlue, + borderRadius: BorderRadius.only( + topRight: Radius.circular(10), + topLeft: Radius.circular(10))), + child: Column( + children: [ + SizedBox( + height: 1.5.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 65, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all( + Radius.circular(12.0))), ), - height: 15.h, - ), - ], - ), - ), - panel: _panel(_scrollController), - body: Stack( - alignment: Alignment.topCenter, - children: [ - GoogleMap( - compassEnabled: true, - mapType: MapType.terrain, - markers: markers.toSet(), - polylines: _polylines, - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon)), - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING), - onMapCreated: (GoogleMapController controller) { - mapController.complete(controller); - // setPolyline(); - }, - onTap: (loc) async { - String title; - showDialog( - context: context, - builder: (context) => Dialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - child: Container( - height: 30.h, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Form( - key: _landmarkFormKey, - child: Column( - children: [ - Container( - height: 12.h, - child: Padding( - padding: - const EdgeInsets.all(4.0), - child: TextFormField( - style: - TextStyle(fontSize: 20.0), - onChanged: (key) { - title = key; - }, - validator: (value) { - if (value == null || - value.isEmpty) { - return "Please enter title for landmark"; - } else { - return null; - } - }, - decoration: InputDecoration( - border: InputBorder.none, - alignLabelWithHint: true, - floatingLabelBehavior: - FloatingLabelBehavior - .always, - hintText: - 'Add title for the landmark', - hintStyle: TextStyle( - fontSize: hintsize, - color: hintColor), - labelText: 'Title', - labelStyle: TextStyle( - fontSize: labelsize, - color: kYellow), - ), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Flexible( - child: HikeButton( - buttonWidth: optbwidth, - buttonHeight: optbheight, - text: 'Create Landmark', - textSize: 18.0, - textColor: Colors.white, - buttonColor: kYellow, - onTap: () async { - if (_landmarkFormKey - .currentState - .validate()) { - navigationService.pop(); - await databaseFunctions - .init(); - await databaseFunctions - .createLandmark(title, - loc, beacon.id) - .then((value) { - setState(() { - markers.add(Marker( - markerId: MarkerId( - (markers.length + - 1) - .toString()), - position: loc, - infoWindow: - InfoWindow( - title: '$title', - ), - icon: BitmapDescriptor - .defaultMarkerWithHue( - BitmapDescriptor - .hueBlue), - )); - }); - }); - } - }), - ), - ], - ), - ), - ), - ), - ), - ); - }, + ], ), - CustomPaint( - size: Size(screenWidth, screenHeight - 200), - foregroundPainter: ShapePainter(), + SizedBox( + height: 1.5.h, ), - Align( - alignment: Alignment(0.87, -0.85), - child: isBeaconExpired - ? Container() - : HikeScreenWidget.shareButton( - context, widget.beacon.shortcode)), - Align( - alignment: Alignment(-0.8, -0.9), - child: GestureDetector( - onTap: () { - onWillPop(context); - }, - child: Icon( - Icons.arrow_back, - size: 30, - color: Colors.white, + Container( + width: double.infinity, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 15), + child: RichText( + text: TextSpan( + style: + TextStyle(fontWeight: FontWeight.bold), + children: [ + TextSpan( + text: model.isBeaconExpired + ? 'Beacon has been expired\n' + : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', + style: TextStyle(fontSize: 18)), + TextSpan( + text: + 'Beacon holder at: ${model.address}\n', + style: TextStyle(fontSize: 14)), + TextSpan( + text: + 'Total Followers: ${model.hikers.length - 1} (Swipe up to view the list of followers)\n', + style: TextStyle(fontSize: 12)), + TextSpan( + text: model.isBeaconExpired + ? '' + : 'Share this passkey to add user: ${widget.beacon.shortcode}\n', + style: TextStyle(fontSize: 12)), + ]), ), ), + height: 15.h, ), ], ), - ) - // }), ), - ), - ), - ); - } - - Column _panel(ScrollController sc) { - return Column(children: [ - SizedBox( - height: 15.0, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 60, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all(Radius.circular(12.0))), - ), - ], - ), - SizedBox( - height: 12, - ), - Container( - height: MediaQuery.of(context).size.height * 0.6 - 32, - child: ListView( - controller: sc, - physics: AlwaysScrollableScrollPhysics(), - children: [ - widget.isLeader - ? Padding( - padding: const EdgeInsets.symmetric(horizontal: 15), - child: RichText( - text: TextSpan( - style: TextStyle( - fontWeight: FontWeight.bold, color: kBlack), - children: [ - TextSpan( - text: - 'Long Press on any hiker to hand over the beacon\n', - style: TextStyle(fontSize: 16)), - //TODO: enable this once backend has updated. - //Commented, since we dont have the neccessary mutation atm on backend to change the duration. - // TextSpan( - // text: - // 'Double tap on beacon to change the duration\n', - // style: TextStyle(fontSize: 14)), - ]), - ), - ) - : Container(), - SizedBox( - height: 6, - ), - Material( - child: ListView.builder( - shrinkWrap: true, - clipBehavior: Clip.antiAlias, - scrollDirection: Axis.vertical, - physics: const NeverScrollableScrollPhysics(), - itemCount: hikers.length, - itemBuilder: (BuildContext context, int index) { - return ListTile( - onTap: () { - hikers[index].id == userConfig.currentUser.id - ? Fluttertoast.showToast(msg: 'Yeah, that\'s you') - : beacon.leader.id == userConfig.currentUser.id - ? relayBeacon(hikers[index]) - : Fluttertoast.showToast( - msg: 'You dont have beacon to relay'); - }, - leading: CircleAvatar( - backgroundColor: - isBeaconExpired ? Colors.grey : kYellow, - radius: 18, - child: ClipRRect( - borderRadius: BorderRadius.circular(50), + panel: HikeScreenWidget.panel(model.scrollController, model, + context, widget.isLeader), + body: Stack( + alignment: Alignment.topCenter, + children: [ + GoogleMap( + compassEnabled: true, + mapType: MapType.terrain, + markers: model.markers.toSet(), + polylines: model.polylines, + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon)), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), + onMapCreated: (GoogleMapController controller) { + setState(() { + model.mapController.complete(controller); + }); + // setPolyline(); + }, + onTap: (loc) async { + String title; + HikeScreenWidget.showCreateLandMarkDialogueDialog( + context, + model.landmarkFormKey, + title, + loc, + model.createLandmark, + ); + }, + ), + CustomPaint( + size: Size(screenWidth, screenHeight - 200), + foregroundPainter: ShapePainter(), + ), + Align( + alignment: Alignment(0.9, -0.85), + child: model.isBeaconExpired + ? Container() + : HikeScreenWidget.shareButton( + context, widget.beacon.shortcode), + ), + if (!model.isBeaconExpired) + //show the routeSharebutton only when beacon is active(?) and mapcontroller is ready. + Align( + alignment: Alignment(0.5, -0.85), + child: AnimatedOpacity( + duration: Duration(milliseconds: 500), + opacity: + model.mapController.isCompleted ? 1.0 : 0.0, + child: HikeScreenWidget.shareRouteButton( + context, + model.beacon, + model.mapController, + model.route), + ), + ), + Align( + alignment: Alignment(-0.8, -0.9), + child: GestureDetector( + onTap: () { + model.onWillPop(context); + }, child: Icon( - Icons.person_outline, + Icons.arrow_back, + size: 30, color: Colors.white, - )), - ), - title: Text( - hikers[index].name, - style: TextStyle(color: Colors.black, fontSize: 18), - ), - trailing: hikers[index].id == beacon.leader.id - ? GestureDetector( - onDoubleTap: () { - !widget.isLeader - ? Fluttertoast.showToast( - msg: - 'Only beacon holder has access to change the duration') - //TODO: enable this once backend has updated. - //Commented, since we dont have the neccessary mutation atm on backend to change the duration. - // : DialogBoxes.changeDurationDialog(context); - : Container(); - }, - child: Icon( - Icons.room, - color: isBeaconExpired ? Colors.grey : kYellow, - size: 40, - ), - ) - : Container(width: 10), - ); - }, - ), - ), - ]), - ), - ]); - } - - Future onWillPop(context) async { - return (await showDialog( - context: context, - builder: (context) => DialogBoxes.showExitDialog( - context, widget.isLeader, hikers.length, isBeaconExpired), - )) ?? - false; + ), + ), + ), + ], + ), + ) + // }), + ), + ), + ), + ); + }, + ); } - void relayBeacon(User newHolder) { - Fluttertoast.showToast(msg: 'Beacon handed over to $newHolder'); - } + // void relayBeacon(User newHolder) { + // Fluttertoast.showToast(msg: 'Beacon handed over to $newHolder'); + // } } diff --git a/pubspec.lock b/pubspec.lock index af6b94e..eae45ff 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.2" + version: "2.8.1" boolean_selector: dependency: transitive description: @@ -105,7 +105,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.1.0" charcode: dependency: transitive description: @@ -589,7 +589,7 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.11" + version: "0.12.10" meta: dependency: transitive description: @@ -758,13 +758,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.26.0" - share: + share_plus: dependency: "direct main" description: - name: share + name: share_plus + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.4" + share_plus_linux: + dependency: transitive + description: + name: share_plus_linux url: "https://pub.dartlang.org" source: hosted version: "2.0.4" + share_plus_macos: + dependency: transitive + description: + name: share_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + share_plus_web: + dependency: transitive + description: + name: share_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + share_plus_windows: + dependency: transitive + description: + name: share_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" shared_preferences: dependency: "direct main" description: @@ -909,7 +944,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.2" timezone: dependency: transitive description: @@ -959,6 +994,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.4" + url_launcher: + dependency: transitive + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.17" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" uuid: dependency: transitive description: @@ -972,7 +1063,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.0" watcher: dependency: transitive description: @@ -1017,4 +1108,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.14.0 <3.0.0" - flutter: ">=2.2.0" + flutter: ">=2.5.0" diff --git a/pubspec.yaml b/pubspec.yaml index b81ad98..a84ef67 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -28,7 +28,7 @@ dependencies: provider: ^5.0.0 uni_links: ^0.5.1 geocoder: ^0.2.1 - share: ^2.0.4 + share_plus: ^3.0.4 location: ^4.3.0 rxdart: ^0.26.0 flutter_polyline_points: ^1.0.0 From 6875f553128ed54ae26f7a194c2fd3c6f073b429 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sun, 23 Jan 2022 18:26:23 +0530 Subject: [PATCH 036/122] Reverse the expired beacons list based on expiry DateTime (#77) * reversed list according to recent * sorted active list --- lib/services/database_mutation_functions.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 79a7347..6bfd28d 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -206,10 +206,14 @@ class DataBaseMutationFunctions { if (!beaconIds.contains(i.id)) { beaconIds.add(i.id); if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) - .isBefore(DateTime.now())) - expiredBeacons.add(i); - else + .isBefore(DateTime.now())) { + expiredBeacons.insert(0, i); + expiredBeacons.sort((a, b) => a.expiresAt.compareTo(b.expiresAt)); + expiredBeacons = expiredBeacons.reversed.toList(); + } else { beacons.add(i); + beacons.sort((a, b) => a.startsAt.compareTo(b.startsAt)); + } } } } From 9479b30da3db7d81e86abf40e28d6b0a644f0cd7 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sun, 23 Jan 2022 19:52:36 +0530 Subject: [PATCH 037/122] feat: Passkey Capitalisation (#86) * uppercase * Added capitalisation * a few enhancements * Update lib/components/create_join_dialog.dart Co-authored-by: Nishtha Bodani Co-authored-by: Nishtha Bodani --- lib/components/beacon_card.dart | 4 ++-- lib/components/create_join_dialog.dart | 4 +++- lib/view_model/home_view_model.dart | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index 79560b5..4d89777 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -23,7 +23,7 @@ class BeaconCustomWidgets { } if (!hasStarted) { navigationService.showSnackBar( - 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); return; } @@ -40,7 +40,7 @@ class BeaconCustomWidgets { await databaseFunctions.joinBeacon(beacon.shortcode); if (!hasStarted) { navigationService.showSnackBar( - 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); return; } diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 8a6a0b7..bcfa22d 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -258,10 +258,12 @@ class CreateJoinBeaconDialog { child: Padding( padding: const EdgeInsets.all(4.0), child: TextFormField( + keyboardType: TextInputType.text, + textCapitalization: TextCapitalization.characters, style: TextStyle(fontSize: 22.0), validator: (value) => Validator.validatePasskey(value), onChanged: (key) { - model.enteredPasskey = key; + model.enteredPasskey = key.toUpperCase(); }, decoration: InputDecoration( alignLabelWithHint: true, diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 64f9243..8b3bc78 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -22,7 +22,7 @@ class HomeViewModel extends BaseModel { TextEditingController durationController = new TextEditingController(); TextEditingController startsAtDate = new TextEditingController(); TextEditingController startsAtTime = new TextEditingController(); - String enteredPasskey = ''; + String enteredPasskey; createHikeRoom() async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); @@ -51,7 +51,7 @@ class HomeViewModel extends BaseModel { localNotif.scheduleNotification(beacon); setState(ViewState.idle); navigationService.showSnackBar( - 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); return; } @@ -82,7 +82,7 @@ class HomeViewModel extends BaseModel { localNotif.scheduleNotification(beacon); setState(ViewState.idle); navigationService.showSnackBar( - 'Beacon has not yet started! Please come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); return; } From 94b2ef6b6d0931506a43b5fa3e13f8104cb59b6f Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 24 Jan 2022 23:47:59 +0530 Subject: [PATCH 038/122] Fixed sliding corners and sliding to minheight (#74) * fixed border and panel * checks and formatting * conflicts resolved * removed unwanted comment --- lib/views/hike_screen.dart | 268 +++++++++++++++++++------------------ 1 file changed, 140 insertions(+), 128 deletions(-) diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 5e35630..4598674 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -49,98 +49,113 @@ class _HikeScreenState extends State { child: Scaffold( body: SafeArea( child: ModalProgressHUD( - inAsyncCall: model.isGeneratingLink || model.isBusy, - child: SlidingUpPanel( - maxHeight: 60.h, - minHeight: 20.h, - controller: model.panelController, - collapsed: Container( - decoration: BoxDecoration( - color: kBlue, - borderRadius: BorderRadius.only( - topRight: Radius.circular(10), - topLeft: Radius.circular(10))), - child: Column( - children: [ - SizedBox( - height: 1.5.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 65, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all( - Radius.circular(12.0))), + inAsyncCall: model.isGeneratingLink || model.isBusy, + child: SlidingUpPanel( + maxHeight: 60.h, + minHeight: 20.h, + borderRadius: BorderRadius.only( + topRight: Radius.circular(10), + topLeft: Radius.circular(10), + ), + controller: model.panelController, + collapsed: Container( + decoration: BoxDecoration( + color: kBlue, + borderRadius: BorderRadius.only( + topRight: Radius.circular(10), + topLeft: Radius.circular(10), + ), + ), + child: Column( + children: [ + SizedBox( + height: 1.5.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 65, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all( + Radius.circular(12.0), + ), ), - ], - ), - SizedBox( - height: 1.5.h, - ), - Container( - width: double.infinity, - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 15), - child: RichText( - text: TextSpan( - style: - TextStyle(fontWeight: FontWeight.bold), - children: [ - TextSpan( - text: model.isBeaconExpired - ? 'Beacon has been expired\n' - : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', - style: TextStyle(fontSize: 18)), - TextSpan( - text: - 'Beacon holder at: ${model.address}\n', - style: TextStyle(fontSize: 14)), - TextSpan( - text: - 'Total Followers: ${model.hikers.length - 1} (Swipe up to view the list of followers)\n', - style: TextStyle(fontSize: 12)), - TextSpan( - text: model.isBeaconExpired - ? '' - : 'Share this passkey to add user: ${widget.beacon.shortcode}\n', - style: TextStyle(fontSize: 12)), - ]), + ), + ], + ), + SizedBox( + height: 1.5.h, + ), + Container( + width: double.infinity, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 15), + child: RichText( + text: TextSpan( + style: TextStyle(fontWeight: FontWeight.bold), + children: [ + TextSpan( + text: model.isBeaconExpired + ? 'Beacon has been expired\n' + : 'Beacon expiring at ${widget.beacon.expiresAt == null ? '' : DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(widget.beacon.expiresAt)).toString()}\n', + style: TextStyle(fontSize: 18), + ), + TextSpan( + text: + 'Beacon holder at: ${model.address}\n', + style: TextStyle(fontSize: 14), + ), + TextSpan( + text: + 'Total Followers: ${model.hikers.length - 1} (Swipe up to view the list of followers)\n', + style: TextStyle(fontSize: 12), + ), + TextSpan( + text: model.isBeaconExpired + ? '' + : 'Share this passkey to add user: ${widget.beacon.shortcode}\n', + style: TextStyle(fontSize: 12), + ), + ], ), ), - height: 15.h, ), - ], - ), + height: 15.h, + ), + ], ), - panel: HikeScreenWidget.panel(model.scrollController, model, - context, widget.isLeader), - body: Stack( - alignment: Alignment.topCenter, - children: [ - GoogleMap( - compassEnabled: true, - mapType: MapType.terrain, - markers: model.markers.toSet(), - polylines: model.polylines, - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon)), - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING), - onMapCreated: (GoogleMapController controller) { - setState(() { - model.mapController.complete(controller); - }); - // setPolyline(); - }, - onTap: (loc) async { + ), + panel: HikeScreenWidget.panel( + model.scrollController, model, context, widget.isLeader), + body: Stack( + alignment: Alignment.topCenter, + children: [ + GoogleMap( + compassEnabled: true, + mapType: MapType.terrain, + markers: model.markers.toSet(), + polylines: model.polylines, + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon), + ), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), + onMapCreated: (GoogleMapController controller) { + setState(() { + model.mapController.complete(controller); + }); + // setPolyline(); + }, + onTap: (loc) async { + if (model.panelController.isPanelOpen) + model.panelController.close(); + else { String title; HikeScreenWidget.showCreateLandMarkDialogueDialog( context, @@ -149,52 +164,49 @@ class _HikeScreenState extends State { loc, model.createLandmark, ); - }, - ), - CustomPaint( - size: Size(screenWidth, screenHeight - 200), - foregroundPainter: ShapePainter(), - ), + } + }, + ), + CustomPaint( + size: Size(screenWidth, screenHeight - 200), + foregroundPainter: ShapePainter(), + ), + Align( + alignment: Alignment(0.9, -0.85), + child: model.isBeaconExpired + ? Container() + : HikeScreenWidget.shareButton( + context, widget.beacon.shortcode), + ), + if (!model.isBeaconExpired) + //show the routeSharebutton only when beacon is active(?) and mapcontroller is ready. Align( - alignment: Alignment(0.9, -0.85), - child: model.isBeaconExpired - ? Container() - : HikeScreenWidget.shareButton( - context, widget.beacon.shortcode), - ), - if (!model.isBeaconExpired) - //show the routeSharebutton only when beacon is active(?) and mapcontroller is ready. - Align( - alignment: Alignment(0.5, -0.85), - child: AnimatedOpacity( - duration: Duration(milliseconds: 500), - opacity: - model.mapController.isCompleted ? 1.0 : 0.0, - child: HikeScreenWidget.shareRouteButton( - context, - model.beacon, - model.mapController, - model.route), - ), + alignment: Alignment(0.5, -0.85), + child: AnimatedOpacity( + duration: Duration(milliseconds: 500), + opacity: + model.mapController.isCompleted ? 1.0 : 0.0, + child: HikeScreenWidget.shareRouteButton(context, + model.beacon, model.mapController, model.route), ), - Align( - alignment: Alignment(-0.8, -0.9), - child: GestureDetector( - onTap: () { - model.onWillPop(context); - }, - child: Icon( - Icons.arrow_back, - size: 30, - color: Colors.white, - ), + ), + Align( + alignment: Alignment(-0.8, -0.9), + child: GestureDetector( + onTap: () { + model.onWillPop(context); + }, + child: Icon( + Icons.arrow_back, + size: 30, + color: Colors.white, ), ), - ], - ), - ) - // }), + ), + ], ), + ), + ), ), ), ); From 36cbbbd9c75737d2b34d8d9a364dd684b2371112 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 25 Jan 2022 23:25:00 +0530 Subject: [PATCH 039/122] Differentiates pre-scheduled, active and expired hikes (#85) * changed card colors for expired beacons * conditional change * added countdown timer * added countdown and status * expired -> ended * few changes --- lib/components/active_beacon.dart | 49 +++++++ lib/components/beacon_card.dart | 212 +++++++++++++++++++++++++++--- lib/components/timer.dart | 56 ++++++++ lib/utilities/constants.dart | 1 + pubspec.yaml | 1 + 5 files changed, 299 insertions(+), 20 deletions(-) create mode 100644 lib/components/active_beacon.dart create mode 100644 lib/components/timer.dart diff --git a/lib/components/active_beacon.dart b/lib/components/active_beacon.dart new file mode 100644 index 0000000..2ef9982 --- /dev/null +++ b/lib/components/active_beacon.dart @@ -0,0 +1,49 @@ +import 'package:flutter/material.dart'; + +class BlinkIcon extends StatefulWidget { + @override + _BlinkIconState createState() => _BlinkIconState(); +} + +class _BlinkIconState extends State with TickerProviderStateMixin { + AnimationController _controller; + Animation _colorAnimation; + @override + void initState() { + _controller = + AnimationController(vsync: this, duration: Duration(milliseconds: 700)); + _colorAnimation = ColorTween( + begin: Color(0xFF30c295), end: Colors.transparent) + .animate(CurvedAnimation(parent: _controller, curve: Curves.linear)); + _controller.addStatusListener((status) { + if (status == AnimationStatus.completed) { + _controller.reverse(); + } else if (status == AnimationStatus.dismissed) { + _controller.forward(); + } + setState(() {}); + }); + _controller.forward(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: _controller, + builder: (context, child) { + return Icon( + Icons.circle, + size: 10, + color: _colorAnimation.value, + ); + }, + ); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } +} diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index 4d89777..c14b483 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -1,8 +1,11 @@ +import 'package:beacon/components/active_beacon.dart'; +import 'package:beacon/components/timer.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; +import 'package:sizer/sizer.dart'; import 'package:skeleton_text/skeleton_text.dart'; import 'package:intl/intl.dart'; @@ -10,11 +13,17 @@ class BeaconCustomWidgets { static final Color textColor = Color(0xFFAFAFAF); static Widget getBeaconCard(BuildContext context, Beacon beacon) { + bool hasStarted; + bool hasEnded; + bool willStart; + hasStarted = DateTime.now() + .isAfter(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)); + hasEnded = DateTime.now() + .isAfter(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt)); + willStart = DateTime.now() + .isBefore(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)); return GestureDetector( onTap: () async { - bool hasStarted; - hasStarted = DateTime.now() - .isAfter(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)); bool isJoinee = false; for (var i in beacon.followers) { if (i.id == userConfig.currentUser.id) { @@ -61,26 +70,189 @@ class BeaconCustomWidgets { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('${beacon?.title} by ${beacon.leader.name}', - style: Style.titleTextStyle), - SizedBox(height: 4.0), - Text('Passkey: ${beacon?.shortcode}', style: Style.commonTextStyle), - SizedBox(height: 4.0), - (beacon.startsAt != null) - ? Text( - 'Starts At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', - style: Style.commonTextStyle) - : Container(), - SizedBox(height: 4.0), - (beacon.expiresAt != null) - ? Text( - 'Expires At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt)).toString()}', - style: Style.commonTextStyle) - : Container(), + (hasStarted && !hasEnded) + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: 70.w, + child: Text( + '${beacon?.title} by ${beacon.leader.name} ', + style: Style.titleTextStyle, + ), + ), + Align( + alignment: Alignment.topRight, + child: BlinkIcon(), + ), + ], + ), + SizedBox(height: 4.0), + RichText( + text: TextSpan( + text: 'Hike is ', + style: Style.commonTextStyle, + children: const [ + TextSpan( + text: 'Active', + style: TextStyle( + fontSize: 16.0, + color: Colors.white, + fontWeight: FontWeight.bold, + letterSpacing: 1.0), + ), + ], + ), + ), + SizedBox(height: 4.0), + Text('Passkey: ${beacon?.shortcode}', + style: Style.commonTextStyle), + SizedBox(height: 4.0), + (beacon.startsAt != null) + ? Text( + 'Started At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + SizedBox(height: 4.0), + (beacon.expiresAt != null) + ? Text( + 'Expires At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + ], + ) + : (willStart) + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + width: 70.w, + child: Text( + '${beacon?.title} by ${beacon.leader.name} ', + style: Style.titleTextStyle, + ), + ), + Align( + alignment: Alignment.topRight, + child: Icon( + Icons.circle, + color: kYellow, + size: 10, + ), + ), + ], + ), + SizedBox(height: 4.0), + Row( + children: [ + RichText( + text: TextSpan( + text: 'Hike ', + style: Style.commonTextStyle, + children: const [ + TextSpan( + text: 'Starts ', + style: TextStyle( + fontSize: 16.0, + color: Colors.white, + fontWeight: FontWeight.bold, + letterSpacing: 1.0), + ), + TextSpan( + text: 'in ', + style: TextStyle( + color: const Color(0xffb6b2df), + fontSize: 14.0, + fontWeight: FontWeight.w400), + ), + ], + ), + ), + SizedBox( + width: 3.0, + ), + CountdownTimerPage( + dateTime: DateTime.fromMillisecondsSinceEpoch( + beacon.startsAt), + name: beacon?.title, + ) + ], + ), + SizedBox(height: 4.0), + Text('Passkey: ${beacon?.shortcode}', + style: Style.commonTextStyle), + SizedBox(height: 4.0), + (beacon.startsAt != null) + ? Text( + 'Starts At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + SizedBox(height: 4.0), + (beacon.expiresAt != null) + ? Text( + 'Expires At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 70.w, + child: Text( + '${beacon?.title} by ${beacon.leader.name} ', + style: Style.titleTextStyle, + ), + ), + SizedBox(height: 4.0), + RichText( + text: TextSpan( + text: 'Hike has ', + style: Style.commonTextStyle, + children: const [ + TextSpan( + text: 'Ended', + style: TextStyle( + fontSize: 16.0, + color: Colors.white, + fontWeight: FontWeight.bold, + letterSpacing: 1.0), + ), + ], + ), + ), + SizedBox(height: 4.0), + Text('Passkey: ${beacon?.shortcode}', + style: Style.commonTextStyle), + SizedBox(height: 4.0), + (beacon.startsAt != null) + ? Text( + 'Started At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + SizedBox(height: 4.0), + (beacon.expiresAt != null) + ? Text( + 'Expired At: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt)).toString()}', + style: Style.commonTextStyle) + : Container(), + ], + ), ], ), decoration: BoxDecoration( - color: kBlue, + color: willStart + ? Color(0xFF141546) + : hasEnded + ? lightkBlue + : kBlue, shape: BoxShape.rectangle, borderRadius: BorderRadius.circular(8.0), boxShadow: [ diff --git a/lib/components/timer.dart b/lib/components/timer.dart new file mode 100644 index 0000000..dd28552 --- /dev/null +++ b/lib/components/timer.dart @@ -0,0 +1,56 @@ +import 'package:beacon/locator.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_countdown_timer/index.dart'; + +class CountdownTimerPage extends StatefulWidget { + final String name; + final DateTime dateTime; + CountdownTimerPage({Key key, @required this.dateTime, @required this.name}) + : super(key: key); + @override + _CountdownTimerPageState createState() => _CountdownTimerPageState(); +} + +class _CountdownTimerPageState extends State + with SingleTickerProviderStateMixin { + CountdownTimerController controller; + int endTime = 0; + @override + void initState() { + super.initState(); + setState(() {}); + int timeDiff = widget.dateTime.difference(DateTime.now()).inSeconds; + setState(() { + endTime = DateTime.now().millisecondsSinceEpoch + 1000 * timeDiff; + }); + controller = + CountdownTimerController(endTime: endTime, onEnd: onEnd, vsync: this); + } + + void onEnd() { + navigationService + .showSnackBar('${widget.name} is now active! You can join the hike'); + } + + @override + Widget build(BuildContext context) { + return CountdownTimer( + controller: controller, + widgetBuilder: (_, CurrentRemainingTime time) { + return Text( + '${time?.days ?? 0} : ${time?.hours ?? 0} : ${time?.min ?? 0} : ${time?.sec ?? 0}', + style: TextStyle( + color: const Color(0xffb6b2df), + fontSize: 14.0, + fontWeight: FontWeight.w400), + ); + }, + ); + } + + @override + void dispose() { + controller.dispose(); + super.dispose(); + } +} diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index 2ecb6eb..cd531eb 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -5,6 +5,7 @@ import 'package:sizer/sizer.dart'; const Color kYellow = Color(0xFFFDBB2C); const Color kBlue = Color(0xFF222375); +const Color lightkBlue = Color(0xFF535393); const Color kLightBlue = Color(0xFFE8F1F8); const Color kBlack = Color(0xFF343434); const Color shimmerSkeletonColor = Color(0xff4e4f91); diff --git a/pubspec.yaml b/pubspec.yaml index a84ef67..3074650 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,6 +39,7 @@ dependencies: flutter_config: ^2.0.0 sizer: ^2.0.15 duration_picker: ^1.1.0+1 + flutter_countdown_timer: ^4.1.0 dev_dependencies: flutter_test: From bd6cf2cec6307b6fc93fa377b3fa0b66e836a0f9 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 25 Jan 2022 23:42:22 +0530 Subject: [PATCH 040/122] Improved hike screen UI (#88) * improved hike_screen UI * checks * small change * conflicts resolved + updated * checks * conflicts * Change bg color for back button --- lib/views/hike_screen.dart | 109 +++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 58 deletions(-) diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 4598674..0fe781a 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -9,7 +9,6 @@ import 'package:intl/intl.dart'; import 'package:modal_progress_hud/modal_progress_hud.dart'; import 'package:beacon/components/hike_screen_widget.dart'; -import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/utilities/constants.dart'; @@ -27,7 +26,6 @@ class HikeScreen extends StatefulWidget { class _HikeScreenState extends State { double screenHeight, screenWidth; - @override Widget build(BuildContext context) { screenHeight = MediaQuery.of(context).size.height; @@ -134,54 +132,62 @@ class _HikeScreenState extends State { alignment: Alignment.topCenter, children: [ GoogleMap( - compassEnabled: true, - mapType: MapType.terrain, - markers: model.markers.toSet(), - polylines: model.polylines, - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon), - ), - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING), - onMapCreated: (GoogleMapController controller) { - setState(() { - model.mapController.complete(controller); - }); - // setPolyline(); - }, - onTap: (loc) async { - if (model.panelController.isPanelOpen) - model.panelController.close(); - else { - String title; - HikeScreenWidget.showCreateLandMarkDialogueDialog( - context, - model.landmarkFormKey, - title, - loc, - model.createLandmark, - ); - } - }, - ), - CustomPaint( - size: Size(screenWidth, screenHeight - 200), - foregroundPainter: ShapePainter(), - ), + compassEnabled: true, + mapType: MapType.terrain, + markers: model.markers.toSet(), + polylines: model.polylines, + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon), + ), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), + onMapCreated: (GoogleMapController controller) { + setState(() { + model.mapController.complete(controller); + }); + // setPolyline(); + }, + onTap: (loc) async { + if (model.panelController.isPanelOpen) + model.panelController.close(); + else { + String title; + HikeScreenWidget.showCreateLandMarkDialogueDialog( + context, + model.landmarkFormKey, + title, + loc, + model.createLandmark, + ); + } + }), Align( - alignment: Alignment(0.9, -0.85), - child: model.isBeaconExpired - ? Container() - : HikeScreenWidget.shareButton( - context, widget.beacon.shortcode), + alignment: Alignment(0.9, -0.98), + child: model.isBeaconExpired + ? Container() + : HikeScreenWidget.shareButton( + context, widget.beacon.shortcode)), + Align( + alignment: Alignment(-0.9, -0.98), + child: FloatingActionButton( + onPressed: () { + model.onWillPop(context); + }, + backgroundColor: kYellow, + child: Icon( + Icons.arrow_back, + size: 35, + color: Colors.white, + ), + ), ), if (!model.isBeaconExpired) //show the routeSharebutton only when beacon is active(?) and mapcontroller is ready. Align( - alignment: Alignment(0.5, -0.85), + alignment: Alignment(0.9, -0.8), child: AnimatedOpacity( duration: Duration(milliseconds: 500), opacity: @@ -190,19 +196,6 @@ class _HikeScreenState extends State { model.beacon, model.mapController, model.route), ), ), - Align( - alignment: Alignment(-0.8, -0.9), - child: GestureDetector( - onTap: () { - model.onWillPop(context); - }, - child: Icon( - Icons.arrow_back, - size: 30, - color: Colors.white, - ), - ), - ), ], ), ), From 2be931bd9efd23fe12f3e023ea975735aadb27d8 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 25 Jan 2022 23:43:41 +0530 Subject: [PATCH 041/122] Updated and sorted dependencies (#89) * updated and sorted * resolved --- pubspec.lock | 43 ++++++++++++++++++++++++++++++++----------- pubspec.yaml | 48 +++++++++++++++++++++++------------------------- 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index eae45ff..74c0d6a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.1" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -105,7 +105,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" charcode: dependency: transitive description: @@ -279,13 +279,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.0" + flutter_countdown_timer: + dependency: "direct main" + description: + name: flutter_countdown_timer + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.9.1" + version: "0.9.2" flutter_lints: dependency: transitive description: @@ -386,7 +393,7 @@ packages: name: get_it url: "https://pub.dartlang.org" source: hosted - version: "7.1.3" + version: "7.2.0" glob: dependency: transitive description: @@ -589,7 +596,7 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10" + version: "0.12.11" meta: dependency: transitive description: @@ -659,14 +666,28 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.8" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.5" path_provider_macos: dependency: transitive description: @@ -687,7 +708,7 @@ packages: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.5" pedantic: dependency: transitive description: @@ -736,7 +757,7 @@ packages: name: provider url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "6.0.2" pub_semver: dependency: transitive description: @@ -944,7 +965,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.3" timezone: dependency: transitive description: @@ -1063,7 +1084,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" watcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3074650..c55ce9c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,45 +9,43 @@ environment: sdk: ">=2.7.0 <3.0.0" dependencies: + connectivity_plus: ^1.0.2 + cupertino_icons: ^1.0.2 + date_time_picker: ^2.0.0 + duration_picker: ^1.1.0+1 flutter: sdk: flutter - - cupertino_icons: ^1.0.2 + flutter_config: ^2.0.0 + flutter_countdown_timer: ^4.1.0 + flutter_local_notifications: ^9.2.0 + flutter_polyline_points: ^1.0.0 fluttertoast: ^8.0.3 - connectivity_plus: ^1.0.2 + geocoder: ^0.2.1 geolocator: ^7.0.1 + get_it: ^7.2.0 google_maps_flutter: ^2.0.6 - intl: ^0.17.0 - date_time_picker: ^2.0.0 - modal_progress_hud: ^0.1.3 - hive: ^2.0.4 - path_provider: ^2.0.2 - shared_preferences: ^2.0.6 graphql_flutter: ^5.0.0 - get_it: ^7.1.3 - provider: ^5.0.0 - uni_links: ^0.5.1 - geocoder: ^0.2.1 - share_plus: ^3.0.4 + hive: ^2.0.4 + intl: ^0.17.0 location: ^4.3.0 - rxdart: ^0.26.0 - flutter_polyline_points: ^1.0.0 - flutter_local_notifications: ^9.2.0 + modal_progress_hud: ^0.1.3 overlay_support: ^1.2.1 - sliding_up_panel: ^2.0.0+1 - skeleton_text: ^1.0.0 - flutter_config: ^2.0.0 + path_provider: ^2.0.8 + provider: ^6.0.2 + rxdart: ^0.26.0 + share_plus: ^3.0.4 + shared_preferences: ^2.0.6 sizer: ^2.0.15 - duration_picker: ^1.1.0+1 - flutter_countdown_timer: ^4.1.0 + skeleton_text: ^1.0.0 + sliding_up_panel: ^2.0.0+1 + uni_links: ^0.5.1 dev_dependencies: + build_runner: ^2.0.4 + flutter_launcher_icons: "^0.9.2" flutter_test: sdk: flutter hive_generator: ^1.1.0 - build_runner: ^2.0.4 - flutter_launcher_icons: "^0.9.1" - flutter_icons: android: "launcher_icon" From df641d3357a876097bb4c5d40922457264adf2c7 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sat, 29 Jan 2022 13:34:35 +0530 Subject: [PATCH 042/122] UI changes (#63) * Changed a few UI error causing lines. * changes * removed overwriting * sharing box size changes * conflict * increased labelsize * auth_screen tab * home tab bar * reduced size of tab bar * checks * create hike changes + sizing for diff screensizes * landmark button changes * fix: formatting * notification change --- lib/components/create_join_dialog.dart | 54 ++--- lib/components/hike_button.dart | 4 +- lib/components/hike_screen_widget.dart | 204 +++++++++---------- lib/services/local_notification.dart | 4 +- lib/utilities/constants.dart | 12 +- lib/views/auth_screen.dart | 8 +- lib/views/home.dart | 262 +++++++++++++------------ 7 files changed, 276 insertions(+), 272 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index bcfa22d..de32c2a 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -9,6 +9,7 @@ import 'package:sizer/sizer.dart'; class CreateJoinBeaconDialog { static Future createHikeDialog(BuildContext context, HomeViewModel model) { + bool isSmallSized = MediaQuery.of(context).size.height < 800; model.resultingDuration = Duration(minutes: 30); model.durationController = new TextEditingController(); model.startsAtDate = new TextEditingController(); @@ -23,14 +24,14 @@ class CreateJoinBeaconDialog { child: Form( key: model.formKeyCreate, child: Container( - height: 65.h, + height: isSmallSized ? 75.h : 65.h, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), child: Column( children: [ Container( - height: 10.h, + height: isSmallSized ? 14.h : 12.h, child: Padding( padding: const EdgeInsets.all(4.0), child: TextFormField( @@ -41,6 +42,7 @@ class CreateJoinBeaconDialog { model.title = name; }, decoration: InputDecoration( + border: InputBorder.none, hintText: 'Enter Title Here', labelStyle: TextStyle( fontSize: labelsize, color: kYellow), @@ -60,7 +62,7 @@ class CreateJoinBeaconDialog { height: 2.h, ), Container( - height: 10.h, + height: isSmallSized ? 12.h : 10.h, child: Padding( padding: const EdgeInsets.all(4.0), child: InkWell( @@ -83,19 +85,18 @@ class CreateJoinBeaconDialog { .substring(0, 10); }, decoration: InputDecoration( - alignLabelWithHint: true, - errorStyle: TextStyle(color: Colors.red[800]), - floatingLabelBehavior: - FloatingLabelBehavior.always, - labelText: 'Start Date', - labelStyle: TextStyle( - fontSize: labelsize, color: kYellow), - hintStyle: TextStyle( - fontSize: hintsize, color: hintColor), - hintText: 'Choose start date', - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, - ), + border: InputBorder.none, + hintText: 'Choose Start Date', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + labelText: 'Start Date', + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior.always, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), ), ), ), @@ -105,7 +106,7 @@ class CreateJoinBeaconDialog { height: 2.h, ), Container( - height: 10.h, + height: isSmallSized ? 12.h : 10.h, child: Padding( padding: const EdgeInsets.all(4.0), child: InkWell( @@ -126,6 +127,7 @@ class CreateJoinBeaconDialog { .substring(10, 15); }, decoration: InputDecoration( + border: InputBorder.none, alignLabelWithHint: true, errorStyle: TextStyle(color: Colors.red[800]), floatingLabelBehavior: @@ -148,7 +150,7 @@ class CreateJoinBeaconDialog { height: 2.h, ), Container( - height: 10.h, + height: isSmallSized ? 14.h : 12.h, child: Padding( padding: const EdgeInsets.all(4.0), child: InkWell( @@ -176,6 +178,7 @@ class CreateJoinBeaconDialog { validator: (value) => Validator.validateDuration(value.toString()), decoration: InputDecoration( + border: InputBorder.none, alignLabelWithHint: true, errorStyle: TextStyle(color: Colors.red[800]), floatingLabelBehavior: @@ -185,7 +188,7 @@ class CreateJoinBeaconDialog { fontSize: labelsize, color: kYellow), hintStyle: TextStyle( fontSize: hintsize, color: hintColor), - hintText: 'How long should beacon last for?', + hintText: 'Enter duration of hike', focusedBorder: InputBorder.none, enabledBorder: InputBorder.none), ), @@ -199,14 +202,13 @@ class CreateJoinBeaconDialog { Flexible( flex: 2, child: HikeButton( - buttonWidth: optbwidth, - buttonHeight: optbheight, - textSize: 18.0, text: 'Create', + textSize: 18.0, textColor: Colors.white, buttonColor: kYellow, onTap: () { // navigationService.pop(); + print(MediaQuery.of(context).size.height); if (model.startingdate == null || model.startingTime == null) { navigationService @@ -240,6 +242,7 @@ class CreateJoinBeaconDialog { } static Future joinBeaconDialog(BuildContext context, HomeViewModel model) { + bool isSmallSized = MediaQuery.of(context).size.height < 800; return showDialog( context: context, builder: (context) => Dialog( @@ -249,12 +252,13 @@ class CreateJoinBeaconDialog { child: Form( key: model.formKeyJoin, child: Container( - height: 28.h, + height: isSmallSized ? 30.h : 25.h, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), child: Column( children: [ Container( + height: isSmallSized ? 14.h : 12.h, child: Padding( padding: const EdgeInsets.all(4.0), child: TextFormField( @@ -285,14 +289,12 @@ class CreateJoinBeaconDialog { ), Flexible( child: HikeButton( - buttonWidth: optbwidth, - buttonHeight: optbheight, text: 'Validate', textSize: 18.0, textColor: Colors.white, buttonColor: kYellow, onTap: () { - navigationService.pop(); + // navigationService.pop(); model.joinHikeRoom(); }, ), diff --git a/lib/components/hike_button.dart b/lib/components/hike_button.dart index 5a9b4ba..6344178 100644 --- a/lib/components/hike_button.dart +++ b/lib/components/hike_button.dart @@ -16,8 +16,8 @@ class HikeButton extends StatelessWidget { this.buttonColor = kYellow, this.text, this.textColor = Colors.white, - this.buttonWidth = 32, //button sizes have been defined in constants.dart - this.buttonHeight = 32, + this.buttonWidth = optbwidth, + this.buttonHeight = optbheight, this.textSize = 18}); @override diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index 1281e59..fd057e3 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -33,65 +33,64 @@ class HikeScreenWidget { return FloatingActionButton( onPressed: () { showDialog( - context: context, - builder: (context) => Dialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - child: Container( - height: 35.h, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - child: Padding( - padding: const EdgeInsets.all(4.0), - child: Text( - 'Invite Friends', - style: TextStyle(fontSize: 24), - ), - ), - ), - SizedBox( - height: 3.h, - ), - Flexible( - child: HikeButton( - buttonHeight: optbheight, - buttonWidth: optbwidth, - textSize: 18, - text: 'Generate URL', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () async { - generateUrl(passkey); - navigationService.pop(); - }), - ), - SizedBox( - height: 1.h, - ), - Flexible( - child: HikeButton( - buttonHeight: optbheight * 1, - buttonWidth: optbwidth, - textSize: 18, - text: 'Copy Passkey', - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - copyPasskey(passkey); - navigationService.pop(); - }, - ), - ) - ], + context: context, + builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + child: Container( + height: 30.h, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + child: Padding( + padding: const EdgeInsets.all(4.0), + child: Text( + 'Invite Friends', + style: TextStyle(fontSize: 24), + ), ), ), - ), - )); + SizedBox( + height: 3.5.h, + ), + Flexible( + child: HikeButton( + buttonHeight: optbheight - 4, + textSize: 16, + text: 'Generate URL', + textColor: Colors.white, + buttonColor: kYellow, + onTap: () async { + generateUrl(passkey); + navigationService.pop(); + }), + ), + SizedBox( + height: 2.h, + ), + Flexible( + child: HikeButton( + buttonHeight: optbheight - 4, + textSize: 16, + text: 'Copy Passkey', + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + copyPasskey(passkey); + navigationService.pop(); + }, + ), + ) + ], + ), + ), + ), + ), + ); }, backgroundColor: kYellow, child: Icon(Icons.person_add), @@ -158,28 +157,29 @@ class HikeScreenWidget { static Column panel(ScrollController sc, HikeScreenViewModel model, BuildContext context, bool isLeader) { - return Column(children: [ - SizedBox( - height: 15.0, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - width: 60, - height: 5, - decoration: BoxDecoration( - color: Colors.grey[300], - borderRadius: BorderRadius.all(Radius.circular(12.0))), - ), - ], - ), - SizedBox( - height: 12, - ), - Container( - height: MediaQuery.of(context).size.height * 0.6 - 32, - child: ListView( + return Column( + children: [ + SizedBox( + height: 15.0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + width: 60, + height: 5, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.all(Radius.circular(12.0))), + ), + ], + ), + SizedBox( + height: 12, + ), + Container( + height: MediaQuery.of(context).size.height * 0.6 - 32, + child: ListView( controller: sc, physics: AlwaysScrollableScrollPhysics(), children: [ @@ -188,20 +188,21 @@ class HikeScreenWidget { padding: const EdgeInsets.symmetric(horizontal: 15), child: RichText( text: TextSpan( - style: TextStyle( - fontWeight: FontWeight.bold, color: kBlack), - children: [ - TextSpan( - text: - 'Long Press on any hiker to hand over the beacon\n', - style: TextStyle(fontSize: 16)), - //TODO: enable this once backend has updated. - //Commented, since we dont have the neccessary mutation atm on backend to change the duration. - // TextSpan( - // text: - // 'Double tap on beacon to change the duration\n', - // style: TextStyle(fontSize: 14)), - ]), + style: TextStyle( + fontWeight: FontWeight.bold, color: kBlack), + children: [ + TextSpan( + text: + 'Long Press on any hiker to hand over the beacon\n', + style: TextStyle(fontSize: 16)), + //TODO: enable this once backend has updated. + //Commented, since we dont have the neccessary mutation atm on backend to change the duration. + // TextSpan( + // text: + // 'Double tap on beacon to change the duration\n', + // style: TextStyle(fontSize: 14)), + ], + ), ), ) : Container(), @@ -266,9 +267,11 @@ class HikeScreenWidget { }, ), ), - ]), - ), - ]); + ], + ), + ), + ], + ); } static void showCreateLandMarkDialogueDialog( @@ -282,7 +285,7 @@ class HikeScreenWidget { context: context, builder: (context) => Dialog( child: Container( - height: 30.h, + height: MediaQuery.of(context).size.height < 800 ? 30.h : 25.h, child: Padding( padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), child: Form( @@ -290,7 +293,8 @@ class HikeScreenWidget { child: Column( children: [ Container( - height: 12.h, + height: + MediaQuery.of(context).size.height < 800 ? 14.h : 12.h, child: Padding( padding: const EdgeInsets.all(4.0), child: TextFormField( @@ -325,10 +329,8 @@ class HikeScreenWidget { ), Flexible( child: HikeButton( - buttonWidth: optbwidth, - buttonHeight: optbheight, text: 'Create Landmark', - textSize: 18.0, + textSize: 17.0, textColor: Colors.white, buttonColor: kYellow, onTap: () => createLandmark(title, loc), diff --git a/lib/services/local_notification.dart b/lib/services/local_notification.dart index 18fff71..236f7f9 100644 --- a/lib/services/local_notification.dart +++ b/lib/services/local_notification.dart @@ -46,8 +46,8 @@ class LocalNotification { Future scheduleNotification(Beacon beacon) async { await flutterLocalNotificationsPlugin.zonedSchedule( beacon.id.hashCode, - beacon.title + ' starting soon', - 'Join !!!', + beacon.title + ' has started', + 'Click here to join!', tz.TZDateTime.from( DateTime.fromMillisecondsSinceEpoch(beacon.startsAt), tz.local), NotificationDetails( diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index cd531eb..3cfe951 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -15,12 +15,12 @@ const double CAMERA_TILT = 80; const double CAMERA_BEARING = 30; // Button Sizings -final double labelsize = 20; -final double hintsize = 18; -final double homebheight = 4.45.h; -final double homebwidth = 3.w; -final double optbheight = 3.h; -final double optbwidth = 6.w; +const double labelsize = 24; +const double hintsize = 16; +final double homebheight = 4.5.h; +final double homebwidth = 3.5.w; +const double optbheight = 18.0; +const double optbwidth = 30.0; // GraphQL Registering Errors const String exceptionError = "Exception Errors"; diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 5eb67f3..8c6c6ba 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -145,7 +145,7 @@ class _AuthScreenState extends State return Container( padding: EdgeInsets.symmetric(horizontal: 13.5.w), width: screensize.width, - height: 6.75.h, + height: 6.h, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(25.0)), ), @@ -288,8 +288,6 @@ class _AuthScreenState extends State HikeButton( onTap: model.nextLogin, text: 'LOGIN', - buttonWidth: optbwidth, - buttonHeight: 15, ), Padding( padding: EdgeInsets.only( @@ -305,8 +303,6 @@ class _AuthScreenState extends State HikeButton( onTap: () => model.loginAsGuest(), text: 'LOGIN AS GUEST', - buttonHeight: 15, - buttonWidth: optbwidth, ), ], ), @@ -445,8 +441,6 @@ class _AuthScreenState extends State child: HikeButton( onTap: () => model.nextSignup(), text: 'SIGN UP', - buttonHeight: 15, - buttonWidth: optbwidth, ), ), ], diff --git a/lib/views/home.dart b/lib/views/home.dart index cb1e46d..183bd08 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -137,7 +137,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { width: 45.w, child: HikeButton( buttonWidth: homebwidth, - buttonHeight: homebheight, + buttonHeight: homebheight - 2, text: 'Create Hike', textColor: Colors.white, borderColor: Colors.white, @@ -154,13 +154,13 @@ class _MainScreenState extends State with TickerProviderStateMixin { ), ), SizedBox( - width: 2.w, + width: 1.w, ), Container( width: 45.w, child: HikeButton( buttonWidth: homebwidth, - buttonHeight: homebheight, + buttonHeight: homebheight - 2, text: 'Join a Hike', textColor: kYellow, borderColor: kYellow, @@ -179,7 +179,8 @@ class _MainScreenState extends State with TickerProviderStateMixin { crossAxisAlignment: CrossAxisAlignment.center, children: [ Container( - height: MediaQuery.of(context).size.height / 1.75, + height: + MediaQuery.of(context).size.height * 0.565, margin: EdgeInsets.only(top: 20), decoration: BoxDecoration( color: kLightBlue, @@ -223,81 +224,81 @@ class _MainScreenState extends State with TickerProviderStateMixin { final List posts = snapshot.data; return Container( - alignment: Alignment.center, - child: posts.length == 0 - ? SingleChildScrollView( - physics: - AlwaysScrollableScrollPhysics(), - child: Column( - children: [ - Text( - 'You haven\'t joined or created any beacon yet', - textAlign: - TextAlign - .center, - style: TextStyle( - color: - kBlack, - fontSize: - 20), - ), - SizedBox( - height: 2.h, - ), - RichText( - text: TextSpan( - // textAlign: - // TextAlign - // .center, + alignment: Alignment.center, + child: posts.length == 0 + ? SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Column( + children: [ + Text( + 'You haven\'t joined or created any beacon yet', + textAlign: + TextAlign + .center, style: TextStyle( color: kBlack, fontSize: 20), - children: [ - TextSpan( - text: - 'Join', - style: TextStyle( - color: - kYellow)), - TextSpan( - text: - ' a Hike or '), - TextSpan( - text: - 'Create', - style: TextStyle( - color: - kYellow)), - TextSpan( - text: - ' a new one! '), - ], ), - ), - ], - ), - ) - : ListView.builder( - physics: - AlwaysScrollableScrollPhysics(), - scrollDirection: - Axis.vertical, - itemCount: - posts?.length, - padding: - EdgeInsets.all(8), - itemBuilder: - (context, index) { - return BeaconCustomWidgets - .getBeaconCard( - context, - posts[ - index]); - }, - ), - ); + SizedBox( + height: 2.h, + ), + RichText( + text: + TextSpan( + // textAlign: + // TextAlign + // .center, + style: TextStyle( + color: + kBlack, + fontSize: + 20), + children: [ + TextSpan( + text: + 'Join', + style: + TextStyle(color: kYellow)), + TextSpan( + text: + ' a Hike or '), + TextSpan( + text: + 'Create', + style: + TextStyle(color: kYellow)), + TextSpan( + text: + ' a new one! '), + ], + ), + ), + ], + ), + ) + : ListView.builder( + physics: + AlwaysScrollableScrollPhysics(), + scrollDirection: + Axis.vertical, + itemCount: + posts?.length, + padding: + EdgeInsets.all( + 8), + itemBuilder: + (context, + index) { + return BeaconCustomWidgets + .getBeaconCard( + context, + posts[ + index]); + }, + )); } else { return Center( child: BeaconCustomWidgets @@ -307,68 +308,73 @@ class _MainScreenState extends State with TickerProviderStateMixin { }, ), ), - Container( - alignment: Alignment.center, - child: FutureBuilder( - future: databaseFunctions - .fetchNearbyBeacon(), - builder: (context, snapshot) { - if (snapshot.connectionState == - ConnectionState.done) { - if (snapshot.hasError) { - return Center( - child: Text( - snapshot.error.toString(), - textAlign: - TextAlign.center, - textScaleFactor: 1.3, - ), - ); - } + Padding( + padding: const EdgeInsets.all(12.0), + child: Container( + alignment: Alignment.center, + child: FutureBuilder( + future: databaseFunctions + .fetchNearbyBeacon(), + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error + .toString(), + textAlign: + TextAlign.center, + textScaleFactor: 1.3, + ), + ); + } - final posts = snapshot.data; - if (posts == null || - posts.length == 0) { + final posts = snapshot.data; + if (posts == null || + posts.length == 0) { + return SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Center( + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 20), + ), + ), + ); + } + return ListView.builder( + physics: + AlwaysScrollableScrollPhysics(), + scrollDirection: + Axis.vertical, + itemCount: posts.length, + padding: EdgeInsets.all(8), + itemBuilder: + (context, index) { + return BeaconCustomWidgets + .getBeaconCard( + context, + posts[index]); + }, + ); + } else { return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 20), - ), - ), + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 18))), ); } - return ListView.builder( - physics: - AlwaysScrollableScrollPhysics(), - scrollDirection: - Axis.vertical, - itemCount: posts.length, - padding: EdgeInsets.all(8), - itemBuilder: - (context, index) { - return BeaconCustomWidgets - .getBeaconCard(context, - posts[index]); - }, - ); - } else { - return SingleChildScrollView( - physics: - AlwaysScrollableScrollPhysics(), - child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 18))), - ); - } - }, + }, + ), ), ), ], From 22402931feb9686d0751eafbb10725b6f4c06d5e Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Mon, 31 Jan 2022 00:50:03 +0530 Subject: [PATCH 043/122] Changes theme of DateTime picker (#93) * changed theme and text size of 2 input fields * text theme for calendar * format * text theme added for time picker * reverted some changes --- lib/components/create_join_dialog.dart | 44 +++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index de32c2a..d454636 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -72,6 +72,16 @@ class CreateJoinBeaconDialog { initialDate: DateTime.now(), firstDate: DateTime.now(), lastDate: DateTime(2100), + builder: (context, child) => Theme( + data: ThemeData().copyWith( + textTheme: Theme.of(context).textTheme, + colorScheme: ColorScheme.light( + primary: kBlue, + onPrimary: Colors.white, + surface: kBlue, + ), + ), + child: child), ); model.startsAtDate.text = model.startingdate.toString().substring(0, 10); @@ -114,6 +124,35 @@ class CreateJoinBeaconDialog { model.startingTime = await showTimePicker( context: context, initialTime: TimeOfDay.now(), + builder: (context, child) { + return Theme( + data: ThemeData( + textTheme: Theme.of(context).textTheme, + timePickerTheme: TimePickerThemeData( + dialHandColor: kBlue, + dayPeriodTextColor: kBlue, + hourMinuteTextColor: kBlue, + helpTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 15.0, + fontWeight: FontWeight.w600, + ), + hourMinuteTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 40.0, + fontWeight: FontWeight.w600, + ), + dayPeriodTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 18.0, + fontWeight: FontWeight.w600, + ), + ), + ), + // This will change to light theme. + child: child, + ); + }, ); model.startsAtTime.text = model.startingTime.toString().substring(10, 15); @@ -160,6 +199,10 @@ class CreateJoinBeaconDialog { initialTime: model.resultingDuration != null ? model.resultingDuration : Duration(minutes: 30), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(5.0), + ), ); model.durationController.text = model .resultingDuration @@ -208,7 +251,6 @@ class CreateJoinBeaconDialog { buttonColor: kYellow, onTap: () { // navigationService.pop(); - print(MediaQuery.of(context).size.height); if (model.startingdate == null || model.startingTime == null) { navigationService From 890789efcbcb901cc9e1639dcbeb17849998afae Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 1 Feb 2022 21:53:26 +0530 Subject: [PATCH 044/122] feat: Close keyboard when text field is out of focus (#96) * feat: close keyboard upon choosing other fields * feat: close keyboard on tapping dialog box --- lib/components/create_join_dialog.dart | 448 +++++++++++++------------ 1 file changed, 229 insertions(+), 219 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index d454636..e9b5282 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -16,92 +16,41 @@ class CreateJoinBeaconDialog { model.startsAtTime = new TextEditingController(); return showDialog( context: context, - builder: (context) => Dialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), - ), - child: SingleChildScrollView( - child: Form( - key: model.formKeyCreate, - child: Container( - height: isSmallSized ? 75.h : 65.h, - child: Padding( - padding: - const EdgeInsets.symmetric(horizontal: 32, vertical: 16), - child: Column( - children: [ - Container( - height: isSmallSized ? 14.h : 12.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: TextFormField( - style: TextStyle(fontSize: 22.0), - validator: (value) => - Validator.validateBeaconTitle(value), - onChanged: (name) { - model.title = name; - }, - decoration: InputDecoration( - border: InputBorder.none, - hintText: 'Enter Title Here', - labelStyle: TextStyle( - fontSize: labelsize, color: kYellow), - hintStyle: TextStyle( - fontSize: hintsize, color: hintColor), - labelText: 'Title', - alignLabelWithHint: true, - floatingLabelBehavior: - FloatingLabelBehavior.always, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), - ), - ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Container( - height: isSmallSized ? 12.h : 10.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: InkWell( - onTap: () async { - model.startingdate = await showDatePicker( - context: context, - initialDate: DateTime.now(), - firstDate: DateTime.now(), - lastDate: DateTime(2100), - builder: (context, child) => Theme( - data: ThemeData().copyWith( - textTheme: Theme.of(context).textTheme, - colorScheme: ColorScheme.light( - primary: kBlue, - onPrimary: Colors.white, - surface: kBlue, - ), - ), - child: child), - ); - model.startsAtDate.text = - model.startingdate.toString().substring(0, 10); - }, + builder: (context) => GestureDetector( + onTap: () => FocusManager.instance.primaryFocus?.unfocus(), + child: Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + child: SingleChildScrollView( + child: Form( + key: model.formKeyCreate, + child: Container( + height: isSmallSized ? 75.h : 65.h, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + height: isSmallSized ? 14.h : 12.h, + child: Padding( + padding: const EdgeInsets.all(4.0), child: TextFormField( - enabled: false, - controller: model.startsAtDate, - onChanged: (value) { - model.startsAtDate.text = model.startingdate - .toString() - .substring(0, 10); + style: TextStyle(fontSize: 22.0), + validator: (value) => + Validator.validateBeaconTitle(value), + onChanged: (name) { + model.title = name; }, decoration: InputDecoration( border: InputBorder.none, - hintText: 'Choose Start Date', + hintText: 'Enter Title Here', labelStyle: TextStyle( fontSize: labelsize, color: kYellow), hintStyle: TextStyle( fontSize: hintsize, color: hintColor), - labelText: 'Start Date', + labelText: 'Title', alignLabelWithHint: true, floatingLabelBehavior: FloatingLabelBehavior.always, @@ -109,171 +58,232 @@ class CreateJoinBeaconDialog { enabledBorder: InputBorder.none), ), ), + color: kLightBlue, ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Container( - height: isSmallSized ? 12.h : 10.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: InkWell( - onTap: () async { - model.startingTime = await showTimePicker( - context: context, - initialTime: TimeOfDay.now(), - builder: (context, child) { - return Theme( - data: ThemeData( - textTheme: Theme.of(context).textTheme, - timePickerTheme: TimePickerThemeData( - dialHandColor: kBlue, - dayPeriodTextColor: kBlue, - hourMinuteTextColor: kBlue, - helpTextStyle: TextStyle( - fontFamily: 'FuturaBold', - fontSize: 15.0, - fontWeight: FontWeight.w600, - ), - hourMinuteTextStyle: TextStyle( - fontFamily: 'FuturaBold', - fontSize: 40.0, - fontWeight: FontWeight.w600, - ), - dayPeriodTextStyle: TextStyle( - fontFamily: 'FuturaBold', - fontSize: 18.0, - fontWeight: FontWeight.w600, + SizedBox( + height: 2.h, + ), + Container( + height: isSmallSized ? 12.h : 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + FocusManager.instance.primaryFocus?.unfocus(); + model.startingdate = await showDatePicker( + context: context, + initialDate: DateTime.now(), + firstDate: DateTime.now(), + lastDate: DateTime(2100), + builder: (context, child) => Theme( + data: ThemeData().copyWith( + textTheme: Theme.of(context).textTheme, + colorScheme: ColorScheme.light( + primary: kBlue, + onPrimary: Colors.white, + surface: kBlue, ), ), - ), - // This will change to light theme. - child: child, - ); - }, - ); - model.startsAtTime.text = - model.startingTime.toString().substring(10, 15); - }, - child: TextFormField( - enabled: false, - controller: model.startsAtTime, - onChanged: (value) { - model.startsAtTime.text = model.startingTime + child: child), + ); + model.startsAtDate.text = model.startingdate .toString() - .substring(10, 15); + .substring(0, 10); }, - decoration: InputDecoration( - border: InputBorder.none, - alignLabelWithHint: true, - errorStyle: TextStyle(color: Colors.red[800]), - floatingLabelBehavior: - FloatingLabelBehavior.always, - labelText: 'Start Time', - labelStyle: TextStyle( - fontSize: labelsize, color: kYellow), - hintStyle: TextStyle( - fontSize: hintsize, color: hintColor), - hintText: 'Choose start time', - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, + child: TextFormField( + enabled: false, + controller: model.startsAtDate, + onChanged: (value) { + model.startsAtDate.text = model.startingdate + .toString() + .substring(0, 10); + }, + decoration: InputDecoration( + border: InputBorder.none, + hintText: 'Choose Start Date', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + labelText: 'Start Date', + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior.always, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), ), ), ), + color: kLightBlue, ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Container( - height: isSmallSized ? 14.h : 12.h, - child: Padding( - padding: const EdgeInsets.all(4.0), - child: InkWell( - onTap: () async { - model.resultingDuration = await showDurationPicker( - context: context, - initialTime: model.resultingDuration != null - ? model.resultingDuration - : Duration(minutes: 30), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(5.0), - ), - ); - model.durationController.text = model - .resultingDuration - .toString() - .substring(0, 8); - }, - child: TextFormField( - enabled: false, - controller: model.durationController, - onChanged: (value) { - model.durationController.text = model - .resultingDuration + SizedBox( + height: 2.h, + ), + Container( + height: isSmallSized ? 12.h : 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + FocusManager.instance.primaryFocus?.unfocus(); + model.startingTime = await showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + builder: (context, child) { + return Theme( + data: ThemeData( + textTheme: Theme.of(context).textTheme, + timePickerTheme: TimePickerThemeData( + dialHandColor: kBlue, + dayPeriodTextColor: kBlue, + hourMinuteTextColor: kBlue, + helpTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 15.0, + fontWeight: FontWeight.w600, + ), + hourMinuteTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 40.0, + fontWeight: FontWeight.w600, + ), + dayPeriodTextStyle: TextStyle( + fontFamily: 'FuturaBold', + fontSize: 18.0, + fontWeight: FontWeight.w600, + ), + ), + ), + // This will change to light theme. + child: child, + ); + }, + ); + model.startsAtTime.text = model.startingTime .toString() - .substring(0, 8); + .substring(10, 15); }, - validator: (value) => - Validator.validateDuration(value.toString()), - decoration: InputDecoration( + child: TextFormField( + enabled: false, + controller: model.startsAtTime, + onChanged: (value) { + model.startsAtTime.text = model.startingTime + .toString() + .substring(10, 15); + }, + decoration: InputDecoration( border: InputBorder.none, alignLabelWithHint: true, errorStyle: TextStyle(color: Colors.red[800]), floatingLabelBehavior: FloatingLabelBehavior.always, - labelText: 'Duration', + labelText: 'Start Time', labelStyle: TextStyle( fontSize: labelsize, color: kYellow), hintStyle: TextStyle( fontSize: hintsize, color: hintColor), - hintText: 'Enter duration of hike', + hintText: 'Choose start time', focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none), + enabledBorder: InputBorder.none, + ), + ), ), ), + color: kLightBlue, ), - color: kLightBlue, - ), - SizedBox( - height: 2.h, - ), - Flexible( - flex: 2, - child: HikeButton( - text: 'Create', - textSize: 18.0, - textColor: Colors.white, - buttonColor: kYellow, - onTap: () { - // navigationService.pop(); - if (model.startingdate == null || - model.startingTime == null) { - navigationService - .showSnackBar("Enter date and time"); - return; - } - model.startsAt = DateTime( - model.startingdate.year, - model.startingdate.month, - model.startingdate.day, - model.startingTime.hour, - model.startingTime.minute, - ); - // localNotif.scheduleNotification(); - if (model.startsAt.isBefore(DateTime.now())) { - navigationService.showSnackBar( - "Enter a valid date and time!!"); - return; - } - model.createHikeRoom(); - }), - ), - ], + SizedBox( + height: 2.h, + ), + Container( + height: isSmallSized ? 14.h : 12.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: InkWell( + onTap: () async { + FocusManager.instance.primaryFocus?.unfocus(); + model.resultingDuration = + await showDurationPicker( + context: context, + initialTime: model.resultingDuration != null + ? model.resultingDuration + : Duration(minutes: 30), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(5.0), + ), + ); + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + child: TextFormField( + enabled: false, + controller: model.durationController, + onChanged: (value) { + model.durationController.text = model + .resultingDuration + .toString() + .substring(0, 8); + }, + validator: (value) => + Validator.validateDuration(value.toString()), + decoration: InputDecoration( + border: InputBorder.none, + alignLabelWithHint: true, + errorStyle: TextStyle(color: Colors.red[800]), + floatingLabelBehavior: + FloatingLabelBehavior.always, + labelText: 'Duration', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + hintText: 'Enter duration of hike', + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), + ), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + flex: 2, + child: HikeButton( + text: 'Create', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + FocusManager.instance.primaryFocus?.unfocus(); + // navigationService.pop(); + if (model.startingdate == null || + model.startingTime == null) { + navigationService + .showSnackBar("Enter date and time"); + return; + } + model.startsAt = DateTime( + model.startingdate.year, + model.startingdate.month, + model.startingdate.day, + model.startingTime.hour, + model.startingTime.minute, + ); + // localNotif.scheduleNotification(); + if (model.startsAt.isBefore(DateTime.now())) { + navigationService.showSnackBar( + "Enter a valid date and time!!"); + return; + } + model.createHikeRoom(); + }), + ), + ], + ), ), ), ), From bc3604aca09c76a973a8b5d5267113ed0150e513 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 1 Feb 2022 22:53:44 +0530 Subject: [PATCH 045/122] fix: alignment issues and responsiveness (#105) * fix: increased distance for smaller screen sizes * auth screen changes --- lib/views/auth_screen.dart | 2 +- lib/views/hike_screen.dart | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 8c6c6ba..db19d0e 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -145,7 +145,7 @@ class _AuthScreenState extends State return Container( padding: EdgeInsets.symmetric(horizontal: 13.5.w), width: screensize.width, - height: 6.h, + height: screensize.height < 800 ? 7.5.h : 6.h, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(25.0)), ), diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 0fe781a..d573e41 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -187,7 +187,9 @@ class _HikeScreenState extends State { if (!model.isBeaconExpired) //show the routeSharebutton only when beacon is active(?) and mapcontroller is ready. Align( - alignment: Alignment(0.9, -0.8), + alignment: screenHeight > 800 + ? Alignment(0.9, -0.8) + : Alignment(0.9, -0.77), child: AnimatedOpacity( duration: Duration(milliseconds: 500), opacity: From f95039a51fcced94f1431d0cea797b7ab4a46aa6 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sat, 5 Feb 2022 22:59:12 +0530 Subject: [PATCH 046/122] feat: sort nearby beacon list according to start time (#99) * feat: nearby beacon list according to start time * feat: nearby beacon list according to start time * feature added --- lib/services/database_mutation_functions.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 6bfd28d..66690d1 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -335,6 +335,7 @@ class DataBaseMutationFunctions { _nearbyBeacons = (result.data['nearbyBeacons'] as List) .map((e) => Beacon.fromJson(e as Map)) .toList(); + _nearbyBeacons.sort((a, b) => a.startsAt.compareTo(b.startsAt)); return _nearbyBeacons; } return _nearbyBeacons; From c97e1b186f6e3aaddd95f0a20197cf36c22fda3e Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sat, 5 Feb 2022 23:07:18 +0530 Subject: [PATCH 047/122] Improvise Snackbar UI (#101) * snackbar improvements * improved: snack bar * added option to join by clicking snack bar * function reduced * time of notification increased * color changes --- lib/components/beacon_card.dart | 1 + lib/components/timer.dart | 41 ++++++++++++++++++++++++++-- lib/services/navigation_service.dart | 20 ++++++++++++-- 3 files changed, 57 insertions(+), 5 deletions(-) diff --git a/lib/components/beacon_card.dart b/lib/components/beacon_card.dart index c14b483..4cdb952 100644 --- a/lib/components/beacon_card.dart +++ b/lib/components/beacon_card.dart @@ -181,6 +181,7 @@ class BeaconCustomWidgets { dateTime: DateTime.fromMillisecondsSinceEpoch( beacon.startsAt), name: beacon?.title, + beacon: beacon, ) ], ), diff --git a/lib/components/timer.dart b/lib/components/timer.dart index dd28552..fd186b3 100644 --- a/lib/components/timer.dart +++ b/lib/components/timer.dart @@ -1,11 +1,19 @@ import 'package:beacon/locator.dart'; +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/utilities/constants.dart'; +import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/index.dart'; class CountdownTimerPage extends StatefulWidget { final String name; final DateTime dateTime; - CountdownTimerPage({Key key, @required this.dateTime, @required this.name}) + final Beacon beacon; + CountdownTimerPage( + {Key key, + @required this.dateTime, + @required this.name, + @required this.beacon}) : super(key: key); @override _CountdownTimerPageState createState() => _CountdownTimerPageState(); @@ -28,8 +36,35 @@ class _CountdownTimerPageState extends State } void onEnd() { - navigationService - .showSnackBar('${widget.name} is now active! You can join the hike'); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + duration: Duration(seconds: 5), + content: Text( + '${widget.name} is now active! \nYou can join the hike', + style: TextStyle(color: Colors.black), + ), + backgroundColor: kLightBlue.withOpacity(0.8), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), + ), + behavior: SnackBarBehavior.floating, + elevation: 5, + action: SnackBarAction( + textColor: kBlue, + label: 'Click to Join', + onPressed: () async { + bool isLeader = + widget.beacon.leader.id == userConfig.currentUser.id; + navigationService.pushScreen( + '/hikeScreen', + arguments: HikeScreen(widget.beacon, isLeader: isLeader), + ); + }, + ), + ), + ); } @override diff --git a/lib/services/navigation_service.dart b/lib/services/navigation_service.dart index f0400af..67bb050 100644 --- a/lib/services/navigation_service.dart +++ b/lib/services/navigation_service.dart @@ -1,3 +1,4 @@ +import 'package:beacon/utilities/constants.dart'; import 'package:flutter/material.dart'; class NavigationService { @@ -39,8 +40,23 @@ class NavigationService { void showSnackBar(String message, {Duration duration = const Duration(seconds: 2)}) { - ScaffoldMessenger.of(navigatorKey.currentContext) - .showSnackBar(SnackBar(duration: duration, content: Text(message))); + ScaffoldMessenger.of(navigatorKey.currentContext).showSnackBar( + SnackBar( + duration: duration, + content: Text( + message, + style: TextStyle(color: Colors.black), + ), + backgroundColor: kLightBlue.withOpacity(0.8), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), + ), + behavior: SnackBarBehavior.floating, + elevation: 5, + ), + ); } void pop() { From ccad1a76e5bd2603e8a9a49f7642115159885932 Mon Sep 17 00:00:00 2001 From: Vivek Verma <86337946+Omegaviv@users.noreply.github.com> Date: Sat, 5 Feb 2022 23:17:41 +0530 Subject: [PATCH 048/122] added placeholder for nearby beacons list (#109) --- lib/views/home.dart | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/views/home.dart b/lib/views/home.dart index 183bd08..f145920 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -316,6 +316,12 @@ class _MainScreenState extends State with TickerProviderStateMixin { future: databaseFunctions .fetchNearbyBeacon(), builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.waiting) + return Center( + child: BeaconCustomWidgets + .getPlaceholder(), + ); if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasError) { From 6ac5206e2a1fb19c4589749708a4d044b2e1833a Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sun, 6 Feb 2022 00:52:30 +0530 Subject: [PATCH 049/122] Feat: Added 1 hr prior reminder for a hike (#112) * feat: added 1 hour prior notification * fix: reduced initialise method name * small changes * changed message * changes * reverted changes --- lib/services/local_notification.dart | 31 ++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/lib/services/local_notification.dart b/lib/services/local_notification.dart index 236f7f9..d3503ee 100644 --- a/lib/services/local_notification.dart +++ b/lib/services/local_notification.dart @@ -46,13 +46,40 @@ class LocalNotification { Future scheduleNotification(Beacon beacon) async { await flutterLocalNotificationsPlugin.zonedSchedule( beacon.id.hashCode, - beacon.title + ' has started', + 'Hike ' + beacon.title + ' has started', 'Click here to join!', tz.TZDateTime.from( DateTime.fromMillisecondsSinceEpoch(beacon.startsAt), tz.local), NotificationDetails( android: AndroidNotificationDetails( - 'channel ID', + 'channel id', + 'channel name', + playSound: true, + priority: Priority.high, + importance: Importance.high, + ), + iOS: IOSNotificationDetails( + presentAlert: true, + presentBadge: true, + presentSound: true, + badgeNumber: 1, + ), + ), + uiLocalNotificationDateInterpretation: + UILocalNotificationDateInterpretation.absoluteTime, + androidAllowWhileIdle: true, + payload: beacon.id, + ); + await flutterLocalNotificationsPlugin.zonedSchedule( + beacon.id.hashCode, + 'Reminder: ' + beacon.title + ' will start in an hour', + 'Get Ready!', + tz.TZDateTime.from( + DateTime.fromMillisecondsSinceEpoch(beacon.startsAt), tz.local) + .subtract(Duration(hours: 1)), + NotificationDetails( + android: AndroidNotificationDetails( + 'channel id', 'channel name', playSound: true, priority: Priority.high, From 92b73fa9bf3e47e5f2c3bc7f4ec317bb9d9c921a Mon Sep 17 00:00:00 2001 From: SK MABUD ALAM <47685150+Pavel401@users.noreply.github.com> Date: Tue, 8 Feb 2022 21:09:27 +0530 Subject: [PATCH 050/122] Updated geocoder dependency using github repo. (#87) * dependency upgrade * added geocoder dependency from github repo * revert to share_plus: ^3.0.4 * Fork branch sync with upstream * AlertDialog UI changes * Sorted dependencies * Delete home.dart * Forced upstream * . * .env.example reverted --- pubspec.lock | 31 ++++++++++++++++++++----------- pubspec.yaml | 5 ++++- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 74c0d6a..d6051fe 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -362,10 +362,12 @@ packages: geocoder: dependency: "direct main" description: - name: geocoder - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.1" + path: "." + ref: "443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028" + resolved-ref: "443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028" + url: "https://github.com/nguyenxdat/flutter_geocoder.git" + source: git + version: "0.3.0" geolocator: dependency: "direct main" description: @@ -597,6 +599,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -965,7 +974,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" timezone: dependency: transitive description: @@ -1021,35 +1030,35 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.17" + version: "6.0.18" url_launcher_android: dependency: transitive description: name: url_launcher_android url: "https://pub.dartlang.org" source: hosted - version: "6.0.13" + version: "6.0.14" url_launcher_ios: dependency: transitive description: name: url_launcher_ios url: "https://pub.dartlang.org" source: hosted - version: "6.0.13" + version: "6.0.14" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3" url_launcher_platform_interface: dependency: transitive description: @@ -1063,7 +1072,7 @@ packages: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.6" url_launcher_windows: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c55ce9c..7d414fb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,7 +20,10 @@ dependencies: flutter_local_notifications: ^9.2.0 flutter_polyline_points: ^1.0.0 fluttertoast: ^8.0.3 - geocoder: ^0.2.1 + geocoder: + git: + url: https://github.com/nguyenxdat/flutter_geocoder.git + ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 geolocator: ^7.0.1 get_it: ^7.2.0 google_maps_flutter: ^2.0.6 From e5b6823fc9ba7e020079fb901b2bd63a89da4f4a Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Tue, 8 Feb 2022 23:23:16 +0530 Subject: [PATCH 051/122] feat: Maintain State when network is lost (#94) * feat: Maintain State when network is lost Squashed all feat: Maintain State when network is lost feat: Full beacon data is persisted * Minor miss. * Optimized Loading time for homescreen beacon, while maintaining same functionality (i.e maintain state when no network) * Suggested changes. Removed CI errors. --- lib/components/hike_screen_widget.dart | 5 + lib/locator.dart | 10 ++ lib/main.dart | 17 +- lib/services/connection_checker.dart | 7 + lib/services/database_mutation_functions.dart | 38 ++++- lib/services/hive_localdb.dart | 60 +++++++ lib/services/user_config.dart | 16 +- lib/splash_screen.dart | 2 +- lib/view_model/hike_screen_model.dart | 147 +++++++++++------- lib/view_model/home_view_model.dart | 1 + pubspec.lock | 9 +- pubspec.yaml | 2 +- 12 files changed, 222 insertions(+), 92 deletions(-) create mode 100644 lib/services/connection_checker.dart create mode 100644 lib/services/hive_localdb.dart diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index fd057e3..e4c93b2 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -111,6 +111,11 @@ class HikeScreenWidget { // sanity check. if (mapController == null || googleMapControllerCompleter.isCompleted == false) return; + if (!await connectionChecker.checkForInternetConnection()) { + navigationService.showSnackBar( + 'Cannot share the route, please check your internet connection.'); + return; + } //show marker description so that image will be more usefull. await mapController.showMarkerInfoWindow(MarkerId("1")); //getting the image (ss) of map. diff --git a/lib/locator.dart b/lib/locator.dart index 0d6bb09..768ee25 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -1,6 +1,8 @@ import 'package:beacon/main.dart'; +import 'package:beacon/services/connection_checker.dart'; import 'package:beacon/services/database_mutation_functions.dart'; import 'package:beacon/services/graphql_config.dart'; +import 'package:beacon/services/hive_localdb.dart'; import 'package:beacon/services/local_notification.dart'; import 'package:beacon/services/navigation_service.dart'; import 'package:beacon/services/user_config.dart'; @@ -15,6 +17,8 @@ final navigationService = locator(); final databaseFunctions = locator(); final graphqlConfig = locator(); final localNotif = locator(); +final hiveDb = locator(); +final connectionChecker = locator(); void setupLocator() { //services @@ -27,6 +31,12 @@ void setupLocator() { //databaseMutationFunction locator.registerSingleton(DataBaseMutationFunctions()); + //Hive localdb + locator.registerSingleton(HiveLocalDb()); + + //Connection checker. + locator.registerSingleton(ConnectionChecker()); + locator.registerFactory(() => DemoViewModel()); locator.registerFactory(() => AuthViewModel()); locator.registerFactory(() => HomeViewModel()); diff --git a/lib/main.dart b/lib/main.dart index ac93f25..28778a7 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,18 +1,12 @@ import 'package:beacon/locator.dart'; -import 'package:beacon/models/beacon/beacon.dart'; -import 'package:beacon/models/landmarks/landmark.dart'; -import 'package:beacon/models/location/location.dart'; import 'package:beacon/router.dart' as router; import 'package:beacon/view_model/base_view_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_config/flutter_config.dart'; -import 'package:hive/hive.dart'; import 'package:sizer/sizer.dart'; import 'package:overlay_support/overlay_support.dart'; -import 'package:path_provider/path_provider.dart' as path_provider; -import 'models/user/user_info.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); @@ -21,18 +15,9 @@ void main() async { DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); - final appDocumentDirectory = - await path_provider.getApplicationDocumentsDirectory(); - Hive - ..init(appDocumentDirectory.path) - ..registerAdapter(UserAdapter()) - ..registerAdapter(BeaconAdapter()) - ..registerAdapter(LocationAdapter()) - ..registerAdapter(LandmarkAdapter()); - await Hive.openBox('currentUser'); - await Hive.openBox('beacons'); setupLocator(); localNotif.initialize(); + await hiveDb.init(); runApp( OverlaySupport( child: Sizer( diff --git a/lib/services/connection_checker.dart b/lib/services/connection_checker.dart new file mode 100644 index 0000000..483e72f --- /dev/null +++ b/lib/services/connection_checker.dart @@ -0,0 +1,7 @@ +import 'package:data_connection_checker/data_connection_checker.dart'; + +class ConnectionChecker { + Future checkForInternetConnection() async { + return await DataConnectionChecker().hasConnection; + } +} diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 66690d1..09a46a1 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -5,6 +5,7 @@ import 'package:beacon/models/location/location.dart'; import 'package:beacon/queries/auth.dart'; import 'package:beacon/queries/beacon.dart'; import 'package:beacon/utilities/constants.dart'; + import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; @@ -190,6 +191,24 @@ class DataBaseMutationFunctions { List beacons = []; Set beaconIds = {}; List expiredBeacons = []; + if (!await connectionChecker.checkForInternetConnection()) { + final userBeacons = hiveDb.getAllUserBeacons(); + if (userBeacons == null) { + //snackbar has already been shown in getAllUserBeacons; + return beacons; + } + for (Beacon i in userBeacons) { + if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) + .isBefore(DateTime.now())) + expiredBeacons.add(i); + else + beacons.add(i); + } + beacons.addAll(expiredBeacons); + return beacons; + } + + //if connected to internet take from internet. final QueryResult result = await clientAuth .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); if (result.hasException) { @@ -204,6 +223,11 @@ class DataBaseMutationFunctions { ); for (var i in userInfo.beacon) { if (!beaconIds.contains(i.id)) { + if (!hiveDb.beaconsBox.containsKey(i.id)) { + //This only happens if a someone else adds user to their beacon (which currently is not possible). + //beacons are put in box when creating or joining. + await hiveDb.putBeaconInBeaconBox(i.id, i); + } beaconIds.add(i.id); if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) .isBefore(DateTime.now())) { @@ -241,6 +265,7 @@ class DataBaseMutationFunctions { final Beacon beacon = Beacon.fromJson( result.data['createBeacon'] as Map, ); + hiveDb.putBeaconInBeaconBox(beacon.id, beacon); return beacon; } return null; @@ -251,7 +276,9 @@ class DataBaseMutationFunctions { document: gql(_beaconQuery.updateLeaderLoc( id, latLng.latitude.toString(), latLng.longitude.toString())))); if (result.hasException) { - print("Something went wrong: ${result.exception}"); + print( + "Something went wrong: ${result.exception}", + ); navigationService.showSnackBar( "Something went wrong: ${result.exception.graphqlErrors.first.message}"); } else if (result.data != null && result.isConcrete) { @@ -279,14 +306,17 @@ class DataBaseMutationFunctions { if (DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) .isBefore(DateTime.now())) { navigationService.showSnackBar( - "Looks like the beacon you are trying join has expired"); + "Looks like the beacon you are trying join has expired", + ); return null; } beacon.route.add(beacon.leader.location); + hiveDb.putBeaconInBeaconBox(beacon.id, beacon); return beacon; } else { - navigationService - .showSnackBar("Something went wrong while trying to join Beacon"); + navigationService.showSnackBar( + "Something went wrong while trying to join Beacon", + ); } return null; } diff --git a/lib/services/hive_localdb.dart b/lib/services/hive_localdb.dart new file mode 100644 index 0000000..7f71d1d --- /dev/null +++ b/lib/services/hive_localdb.dart @@ -0,0 +1,60 @@ +import 'package:beacon/locator.dart'; +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/landmarks/landmark.dart'; +import 'package:beacon/models/location/location.dart'; +import 'package:beacon/models/user/user_info.dart'; +import 'package:hive/hive.dart'; +import 'package:path_provider/path_provider.dart' as path_provider; + +class HiveLocalDb { + Box currentUserBox; + Box beaconsBox; + + Future init() async { + final appDocumentDirectory = + await path_provider.getApplicationDocumentsDirectory(); + Hive + ..init(appDocumentDirectory.path) + ..registerAdapter(UserAdapter()) + ..registerAdapter(BeaconAdapter()) + ..registerAdapter(LocationAdapter()) + ..registerAdapter(LandmarkAdapter()); + currentUserBox = await Hive.openBox('currentUser'); + beaconsBox = await Hive.openBox('beacons'); + } + + Future saveUserInHive(User currentUser) async { + final box = currentUserBox; + if (currentUserBox.containsKey('user')) { + currentUserBox.delete('user'); + } + return await box.put('user', currentUser); + } + + Future putBeaconInBeaconBox(String id, Beacon beacon, + {bool fetchFromNetwork = false}) async { + if (beaconsBox.containsKey(id)) { + await beaconsBox.delete(id); + } + if (fetchFromNetwork) { + databaseFunctions.init(); + beacon = await databaseFunctions.fetchBeaconInfo(id); + } + await beaconsBox.put(id, beacon); + } + + List getAllUserBeacons() { + final user = currentUserBox.get('user'); + print("asd" + user.id); + if (user == null) { + navigationService + .showSnackBar('Please connect to internet to fetch your beacons'); + return null; + } + final userBeacons = beaconsBox.values.toList(); + if (userBeacons == null) { + return user.beacon; + } + return userBeacons; + } +} diff --git a/lib/services/user_config.dart b/lib/services/user_config.dart index 79d7937..60be11f 100644 --- a/lib/services/user_config.dart +++ b/lib/services/user_config.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; -import 'package:hive/hive.dart'; import '../locator.dart'; class UserConfig { @@ -9,7 +8,7 @@ class UserConfig { User get currentUser => _currentUser; Future userLoggedIn() async { - final boxUser = Hive.box('currentUser'); + final boxUser = hiveDb.currentUserBox; _currentUser = boxUser.get('user'); if (_currentUser == null) { _currentUser = User(id: 'null', authToken: 'null'); @@ -21,7 +20,7 @@ class UserConfig { await databaseFunctions.init(); await databaseFunctions.fetchCurrentUserInfo().then((value) { if (value) { - saveUserInHive(); + hiveDb.saveUserInHive(_currentUser); userUpdated = true; } else { navigationService.showSnackBar("Couldn't update User details"); @@ -37,20 +36,11 @@ class UserConfig { try { _currentUser = updatedUserDetails; print("User is guest or not: ${updatedUserDetails.isGuest}"); - saveUserInHive(); + hiveDb.saveUserInHive(_currentUser); return true; } on Exception catch (e) { debugPrint(e.toString()); return false; } } - - saveUserInHive() { - final box = Hive.box('currentUser'); - if (box.get('user') == null) { - box.put('user', _currentUser); - } else { - box.put('user', _currentUser); - } - } } diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart index 5a0e817..78ef43e 100644 --- a/lib/splash_screen.dart +++ b/lib/splash_screen.dart @@ -46,7 +46,7 @@ class _SplashScreenState extends State { await databaseFunctions.init(); await userConfig.userLoggedIn().then((value) async { if (_latestUri == null && _initialUri == null) { - if (value) { + if (value || hiveDb.currentUserBox.containsKey('user')) { navigationService.pushReplacementScreen('/main'); } else { navigationService.pushReplacementScreen('/auth'); diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index 0ba58aa..63d9dba 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -5,6 +5,7 @@ import 'package:beacon/locator.dart'; import 'package:beacon/queries/beacon.dart'; import 'package:beacon/services/graphql_config.dart'; import 'package:beacon/utilities/constants.dart'; + import 'package:flutter/material.dart'; import 'package:flutter_config/flutter_config.dart'; import 'package:flutter_polyline_points/flutter_polyline_points.dart'; @@ -14,6 +15,7 @@ import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:beacon/enums/view_state.dart'; import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/location/location.dart' deferred as locModel; import 'package:beacon/models/user/user_info.dart'; import 'package:beacon/view_model/base_view_model.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; @@ -139,64 +141,74 @@ class HikeScreenViewModel extends BaseModel { )); } - Future fetchData() async { + Future updateModel(Beacon value) async { Coordinates coordinates = Coordinates( double.parse(beacon.location.lat), double.parse(beacon.location.lon)); var addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates); - await databaseFunctions.fetchBeaconInfo(beacon.id).then((value) { - beacon = value; - isBeaconExpired = DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now()); - hikers.add(value.leader); - for (var i in value.followers) { - if (!followerId.contains(i.id)) { - hikers.add(i); - followerId.add(i.id); - } + isBeaconExpired = DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now()); + hikers.add(value.leader); + for (var i in value.followers) { + if (!followerId.contains(i.id)) { + hikers.add(i); + followerId.add(i.id); } - var lat = double.parse(value.location.lat); - var lon = double.parse(value.location.lon); - route.add(LatLng(lat, lon)); - address = addresses.first.addressLine; - markers.add(Marker( - markerId: MarkerId("0"), - position: route.first, - infoWindow: InfoWindow( - title: 'Initial Location', - ), - )); + } + var lat = double.parse(value.location.lat); + var lon = double.parse(value.location.lon); + route.add(LatLng(lat, lon)); + address = addresses.first.addressLine; + markers.add(Marker( + markerId: MarkerId("0"), + position: route.first, + infoWindow: InfoWindow( + title: 'Initial Location', + ), + )); + markers.add(Marker( + markerId: MarkerId("1"), + position: route.last, + infoWindow: InfoWindow( + title: 'Current Location', + ), + )); + for (var i in value.landmarks) { markers.add(Marker( - markerId: MarkerId("1"), - position: route.last, + markerId: MarkerId((markers.length + 1).toString()), + position: + LatLng(double.parse(i.location.lat), double.parse(i.location.lon)), infoWindow: InfoWindow( - title: 'Current Location', + title: '${i.title}', ), + icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), )); - for (var i in value.landmarks) { - markers.add(Marker( - markerId: MarkerId((markers.length + 1).toString()), - position: LatLng( - double.parse(i.location.lat), double.parse(i.location.lon)), - infoWindow: InfoWindow( - title: '${i.title}', - ), - icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), - )); + } + // for (var i in value.followers) { + // markers.add(Marker( + // markerId: MarkerId((markers.length + 1).toString()), + // position: LatLng( + // double.parse(i.location.lat), double.parse(i.location.lon)), + // infoWindow: InfoWindow( + // title: '${i.name}', + // ), + // icon: BitmapDescriptor.defaultMarkerWithHue( + // BitmapDescriptor.hueYellow), + // )); + // } + //notifyListeners(); + } + + Future fetchData() async { + await databaseFunctions.fetchBeaconInfo(beacon.id).then((value) async { + if (value != null) { + beacon = value; + await hiveDb.putBeaconInBeaconBox(beacon.id, beacon); + } else { + value = hiveDb.beaconsBox.get(beacon.id); + beacon = value; } - // for (var i in value.followers) { - // markers.add(Marker( - // markerId: MarkerId((markers.length + 1).toString()), - // position: LatLng( - // double.parse(i.location.lat), double.parse(i.location.lon)), - // infoWindow: InfoWindow( - // title: '${i.name}', - // ), - // icon: BitmapDescriptor.defaultMarkerWithHue( - // BitmapDescriptor.hueYellow), - // )); - // } - //notifyListeners(); + await updateModel(value); }); } @@ -294,6 +306,8 @@ class HikeScreenViewModel extends BaseModel { if (!followerId.contains(newJoinee.id)) { hikers.add(newJoinee); followerId.add(newJoinee.id); + beacon.followers.add(newJoinee); + await hiveDb.putBeaconInBeaconBox(beacon.id, beacon); } // markers.add(Marker( // markerId: MarkerId((markers.length + 1).toString()), @@ -313,7 +327,13 @@ class HikeScreenViewModel extends BaseModel { double.parse(event.data['beaconLocation']['lon'])); var addresses = await Geocoder.local.findAddressesFromCoordinates( Coordinates(coord.latitude, coord.longitude)); - + beacon.route.add( + locModel.Location( + lat: coord.latitude.toString(), + lon: coord.longitude.toString(), + ), + ); + await hiveDb.putBeaconInBeaconBox(beacon.id, beacon); String _address = addresses.first.addressLine; route.add(coord); updatePinOnMap(coord); @@ -328,13 +348,18 @@ class HikeScreenViewModel extends BaseModel { } Future initialise(Beacon beaconParsed, bool widgetIsLeader) async { - beacon = beaconParsed; + beacon = hiveDb.beaconsBox.get(beaconParsed.id); isLeader = widgetIsLeader; - await fetchData(); - graphQlClient = GraphQLConfig().graphQlClient(); - await setupSubscriptions( - DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) - .isBefore(DateTime.now())); + + if (await connectionChecker.checkForInternetConnection()) { + await fetchData(); + graphQlClient = GraphQLConfig().graphQlClient(); + await setupSubscriptions( + DateTime.fromMillisecondsSinceEpoch(beacon.expiresAt) + .isBefore(DateTime.now())); + } else { + await updateModel(beacon); + } modelIsReady = true; notifyListeners(); // print("REBUITL" + modelIsReady.toString()); @@ -361,6 +386,12 @@ class HikeScreenViewModel extends BaseModel { for (var streamSub in mergedStreamSubscriptions) { if (streamSub != null) streamSub.cancel(); } + connectionChecker.checkForInternetConnection().then( + (value) async { + await hiveDb.putBeaconInBeaconBox(beacon.id, beacon, + fetchFromNetwork: value); + }, + ); super.dispose(); } @@ -380,7 +411,7 @@ class HikeScreenViewModel extends BaseModel { await databaseFunctions.init(); await databaseFunctions .createLandmark(title, loc, beacon.id) - .then((value) { + .then((value) async { markers.add(Marker( markerId: MarkerId((markers.length + 1).toString()), position: loc, @@ -389,6 +420,10 @@ class HikeScreenViewModel extends BaseModel { ), icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue), )); + beacon.landmarks.add(value); + await hiveDb.putBeaconInBeaconBox(beacon.id, beacon); + print(hiveDb.beaconsBox.get(beacon.id).landmarks.length.toString() + + 'asdasdasd'); notifyListeners(); }); } diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index 8b3bc78..c998b90 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -99,6 +99,7 @@ class HomeViewModel extends BaseModel { logout() async { setState(ViewState.busy); await userConfig.currentUser.delete(); + await hiveDb.beaconsBox.clear(); // setState(ViewState.idle); await localNotif.deleteNotification(); navigationService.removeAllAndPush('/auth', '/'); diff --git a/pubspec.lock b/pubspec.lock index d6051fe..4f9e32c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -149,7 +149,7 @@ packages: source: hosted version: "1.15.0" connectivity_plus: - dependency: "direct main" + dependency: transitive description: name: connectivity_plus url: "https://pub.dartlang.org" @@ -218,6 +218,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" + data_connection_checker: + dependency: "direct main" + description: + name: data_connection_checker + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.4" date_time_picker: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 7d414fb..b2be261 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,7 +9,6 @@ environment: sdk: ">=2.7.0 <3.0.0" dependencies: - connectivity_plus: ^1.0.2 cupertino_icons: ^1.0.2 date_time_picker: ^2.0.0 duration_picker: ^1.1.0+1 @@ -20,6 +19,7 @@ dependencies: flutter_local_notifications: ^9.2.0 flutter_polyline_points: ^1.0.0 fluttertoast: ^8.0.3 + data_connection_checker: ^0.3.4 geocoder: git: url: https://github.com/nguyenxdat/flutter_geocoder.git From 83513348fa934500612089342e56ce84f7d4b0c5 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Sat, 12 Feb 2022 21:59:35 +0530 Subject: [PATCH 052/122] Feat: Animated Google map markers. (#121) * Animated Google map markers. * Merged main into this branch. --- lib/view_model/hike_screen_model.dart | 7 ++- lib/views/hike_screen.dart | 76 +++++++++++++++------------ pubspec.lock | 7 +++ pubspec.yaml | 7 +-- 4 files changed, 59 insertions(+), 38 deletions(-) diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index 63d9dba..691098e 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -7,6 +7,7 @@ import 'package:beacon/services/graphql_config.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_animarker/core/ripple_marker.dart'; import 'package:flutter_config/flutter_config.dart'; import 'package:flutter_polyline_points/flutter_polyline_points.dart'; import 'package:fluttertoast/fluttertoast.dart'; @@ -132,7 +133,8 @@ class HikeScreenViewModel extends BaseModel { var pinPosition = loc; markers.removeWhere((m) => m.markerId.value == "1"); - markers.add(Marker( + markers.add(RippleMarker( + ripple: true, markerId: MarkerId("1"), position: pinPosition, // updated position infoWindow: InfoWindow( @@ -166,7 +168,8 @@ class HikeScreenViewModel extends BaseModel { title: 'Initial Location', ), )); - markers.add(Marker( + markers.add(RippleMarker( + ripple: true, markerId: MarkerId("1"), position: route.last, infoWindow: InfoWindow( diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index d573e41..e2768bd 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,6 +1,7 @@ import 'package:beacon/view_model/hike_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_animarker/flutter_map_marker_animation.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; @@ -131,39 +132,48 @@ class _HikeScreenState extends State { body: Stack( alignment: Alignment.topCenter, children: [ - GoogleMap( - compassEnabled: true, - mapType: MapType.terrain, - markers: model.markers.toSet(), - polylines: model.polylines, - initialCameraPosition: CameraPosition( - target: LatLng( - double.parse(widget.beacon.location.lat), - double.parse(widget.beacon.location.lon), - ), - zoom: CAMERA_ZOOM, - tilt: CAMERA_TILT, - bearing: CAMERA_BEARING), - onMapCreated: (GoogleMapController controller) { - setState(() { - model.mapController.complete(controller); - }); - // setPolyline(); - }, - onTap: (loc) async { - if (model.panelController.isPanelOpen) - model.panelController.close(); - else { - String title; - HikeScreenWidget.showCreateLandMarkDialogueDialog( - context, - model.landmarkFormKey, - title, - loc, - model.createLandmark, - ); - } - }), + Animarker( + rippleColor: Colors.redAccent, + rippleRadius: 0.01, + useRotation: true, + mapId: model.mapController.future.then( + (value) => value.mapId, + ), + markers: model.markers.toSet(), + child: GoogleMap( + compassEnabled: true, + mapType: MapType.terrain, + polylines: model.polylines, + initialCameraPosition: CameraPosition( + target: LatLng( + double.parse(widget.beacon.location.lat), + double.parse(widget.beacon.location.lon), + ), + zoom: CAMERA_ZOOM, + tilt: CAMERA_TILT, + bearing: CAMERA_BEARING), + onMapCreated: (GoogleMapController controller) { + setState(() { + model.mapController.complete(controller); + }); + // setPolyline(); + }, + onTap: (loc) async { + if (model.panelController.isPanelOpen) + model.panelController.close(); + else { + String title; + HikeScreenWidget + .showCreateLandMarkDialogueDialog( + context, + model.landmarkFormKey, + title, + loc, + model.createLandmark, + ); + } + }), + ), Align( alignment: Alignment(0.9, -0.98), child: model.isBeaconExpired diff --git a/pubspec.lock b/pubspec.lock index 4f9e32c..5631ead 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -279,6 +279,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_animarker: + dependency: "direct main" + description: + name: flutter_animarker + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" flutter_config: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index b2be261..5779333 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,6 +14,7 @@ dependencies: duration_picker: ^1.1.0+1 flutter: sdk: flutter + flutter_animarker: ^3.2.0 flutter_config: ^2.0.0 flutter_countdown_timer: ^4.1.0 flutter_local_notifications: ^9.2.0 @@ -21,9 +22,9 @@ dependencies: fluttertoast: ^8.0.3 data_connection_checker: ^0.3.4 geocoder: - git: - url: https://github.com/nguyenxdat/flutter_geocoder.git - ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 + git: + url: https://github.com/nguyenxdat/flutter_geocoder.git + ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 geolocator: ^7.0.1 get_it: ^7.2.0 google_maps_flutter: ^2.0.6 From 38ca5e9feb296b1b5f263973236af4e64526a1a4 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sat, 12 Feb 2022 22:13:10 +0530 Subject: [PATCH 053/122] fix: added async to end function of timer (#125) --- lib/components/timer.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/components/timer.dart b/lib/components/timer.dart index fd186b3..adbb349 100644 --- a/lib/components/timer.dart +++ b/lib/components/timer.dart @@ -35,7 +35,7 @@ class _CountdownTimerPageState extends State CountdownTimerController(endTime: endTime, onEnd: onEnd, vsync: this); } - void onEnd() { + void onEnd() async { ScaffoldMessenger.of(context).showSnackBar( SnackBar( duration: Duration(seconds: 5), From f8c907a03d09408f104b4a485a2519432fee6b65 Mon Sep 17 00:00:00 2001 From: Adarsh kumar singh <47661086+adarsh-technocrat@users.noreply.github.com> Date: Sun, 13 Feb 2022 00:29:30 +0530 Subject: [PATCH 054/122] chore: addsupport of IOS Google Map API key and add env config (#134) --- .env.example | 3 ++- android/app/src/main/AndroidManifest.xml | 2 +- ios/Runner/AppDelegate.swift | 4 +++- lib/config/environment_config.dart | 21 +++++++++++++++++++++ lib/main.dart | 4 ++-- lib/services/graphql_config.dart | 6 +++--- lib/view_model/hike_screen_model.dart | 6 ++---- 7 files changed, 34 insertions(+), 12 deletions(-) create mode 100644 lib/config/environment_config.dart diff --git a/.env.example b/.env.example index 6f5fe14..34eb57b 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ -MAPS_API_KEY= +ANDROID_MAP_API_KEY= +IOS_MAP_API_KEY= HTTP_ENDPOINT=(for example: https://beacon.aadibajpai.com/graphql) WEBSOCKET_ENDPOINT=(for example: wss://beacon.aadibajpai.com/subscriptions) \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index c8d63a7..07bce4d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -10,7 +10,7 @@ android:label="Beacon" android:icon="@mipmap/launcher_icon" android:usesCleartextTraffic="true"> - + Bool { + GMSServices.provideAPIKey("IOS_MAP_API_KEY") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } -} +} \ No newline at end of file diff --git a/lib/config/environment_config.dart b/lib/config/environment_config.dart new file mode 100644 index 0000000..a09b18d --- /dev/null +++ b/lib/config/environment_config.dart @@ -0,0 +1,21 @@ +import 'dart:io'; + +import 'package:flutter_config/flutter_config.dart'; + +class EnvironmentConfig { + static String get httpEndpoint => FlutterConfig.get('HTTP_ENDPOINT'); + + static String get websocketEndpoint => + FlutterConfig.get('WEBSOCKET_ENDPOINT'); + + static String get googleMapApi { + if (Platform.isAndroid) { + return FlutterConfig.get('ANDROID_MAP_API_KEY'); + } + return FlutterConfig.get('IOS_MAP_API_KEY'); + } + + static Future loadEnvVariables() async { + await FlutterConfig.loadEnvVariables(); + } +} diff --git a/lib/main.dart b/lib/main.dart index 28778a7..649e9e1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,16 +1,16 @@ +import 'package:beacon/config/environment_config.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/router.dart' as router; import 'package:beacon/view_model/base_view_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_config/flutter_config.dart'; import 'package:sizer/sizer.dart'; import 'package:overlay_support/overlay_support.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - await FlutterConfig.loadEnvVariables(); + EnvironmentConfig.loadEnvVariables(); SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, diff --git a/lib/services/graphql_config.dart b/lib/services/graphql_config.dart index 8ab258b..53fb24b 100644 --- a/lib/services/graphql_config.dart +++ b/lib/services/graphql_config.dart @@ -1,17 +1,17 @@ +import 'package:beacon/config/environment_config.dart'; import 'package:beacon/locator.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; -import 'package:flutter_config/flutter_config.dart'; class GraphQLConfig { static String token; static final HttpLink httpLink = HttpLink( - "${FlutterConfig.get('HTTP_ENDPOINT')}", + EnvironmentConfig.httpEndpoint, ); static final AuthLink authLink = AuthLink(getToken: () async => token); static WebSocketLink websocketLink = - WebSocketLink('${FlutterConfig.get('WEBSOCKET_ENDPOINT')}', + WebSocketLink(EnvironmentConfig.websocketEndpoint, config: SocketClientConfig( autoReconnect: true, initialPayload: { diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index 691098e..796b362 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -1,19 +1,17 @@ import 'dart:async'; import 'package:beacon/components/dialog_boxes.dart'; +import 'package:beacon/config/environment_config.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/queries/beacon.dart'; import 'package:beacon/services/graphql_config.dart'; import 'package:beacon/utilities/constants.dart'; - import 'package:flutter/material.dart'; import 'package:flutter_animarker/core/ripple_marker.dart'; -import 'package:flutter_config/flutter_config.dart'; import 'package:flutter_polyline_points/flutter_polyline_points.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:geocoder/geocoder.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; - import 'package:beacon/enums/view_state.dart'; import 'package:beacon/models/beacon/beacon.dart'; import 'package:beacon/models/location/location.dart' deferred as locModel; @@ -96,7 +94,7 @@ class HikeScreenViewModel extends BaseModel { Future setPolyline() async { PolylineResult result = await polylinePoints?.getRouteBetweenCoordinates( - '${FlutterConfig.get('MAPS_API_KEY')}', // Google Maps API Key + EnvironmentConfig.googleMapApi, // Google Maps API Key PointLatLng(route.first.latitude, route.first.longitude), PointLatLng(route.last.latitude, route.last.longitude), ); From 7985f5ae29fb6ea4e4b3a274425c3245d77bac01 Mon Sep 17 00:00:00 2001 From: Aadeesh11 <66922161+Aadeesh11@users.noreply.github.com> Date: Wed, 16 Feb 2022 21:31:10 +0530 Subject: [PATCH 055/122] Test: Model test (Beacon and User model). (#114) * Test: Models test. Diff Lat/Lon values. User model test added. Added update method test. * Merged main into this branch. * rfrac: used generic names. --- pubspec.lock | 79 +++++++++++++-- pubspec.yaml | 1 + test/model_tests/beacon_test.dart | 59 +++++++++++ test/model_tests/user_test.dart | 162 ++++++++++++++++++++++++++++++ test/widget_test.dart | 7 -- 5 files changed, 293 insertions(+), 15 deletions(-) create mode 100644 test/model_tests/beacon_test.dart create mode 100644 test/model_tests/user_test.dart delete mode 100644 test/widget_test.dart diff --git a/pubspec.lock b/pubspec.lock index 5631ead..19332f5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -197,6 +197,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.0" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" crypto: dependency: transitive description: @@ -613,13 +620,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.3" meta: dependency: transitive description: @@ -655,6 +655,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.4.2" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" normalize: dependency: transitive description: @@ -893,6 +900,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.4" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" shelf_web_socket: dependency: transitive description: @@ -940,6 +961,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.10" source_span: dependency: transitive description: @@ -982,13 +1017,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + test: + dependency: "direct dev" + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.17.12" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.3" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.2" timezone: dependency: transitive description: @@ -1108,6 +1157,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "7.5.0" watcher: dependency: transitive description: @@ -1122,6 +1178,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5779333..c010283 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,6 +50,7 @@ dev_dependencies: flutter_test: sdk: flutter hive_generator: ^1.1.0 + test: ^1.14.4 flutter_icons: android: "launcher_icon" diff --git a/test/model_tests/beacon_test.dart b/test/model_tests/beacon_test.dart new file mode 100644 index 0000000..369b771 --- /dev/null +++ b/test/model_tests/beacon_test.dart @@ -0,0 +1,59 @@ +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:test/test.dart'; + +void main() { + //structered according to fetchBeaconDetail Query. + Map dummyJson = { + "_id": "61fd51b4f0c4c3219ce356f5", + "title": "new_beacon", + "leader": {"name": "test_leader"}, + "followers": [ + { + "_id": "61fd509bf0c4c3219ce356ed", + "name": "test_leader", + "location": {"lat": "10", "lon": "20"} + } + ], + "landmarks": [ + { + "title": "landmark", + "location": {"lat": "1", "lon": "2"} + } + ], + "location": {"lat": "1", "lon": "2"}, + "startsAt": 1669746600000, + "expiresAt": 1669746600001, + "shortcode": "WCQDUR" + }; + + test('Beacon.fromJson method works or not: ', () { + Beacon beacon = Beacon.fromJson(dummyJson); + //beacon id + expect("61fd51b4f0c4c3219ce356f5", beacon.id); + //title + expect("new_beacon", beacon.title); + //leader name + expect("test_leader", beacon.leader.name); + //follower id + expect("61fd509bf0c4c3219ce356ed", beacon.followers.first.id); + //follower name + expect("test_leader", beacon.followers.first.name); + //follower location + expect("10", beacon.followers.first.location.lat); + //longitude + expect("20", beacon.followers.first.location.lon); + //landmark + expect("landmark", beacon.landmarks.first.title); + expect("1", beacon.landmarks.first.location.lat); + expect("2", beacon.landmarks.first.location.lon); + //beacon location + expect("1", beacon.location.lat); + expect("2", beacon.location.lon); + //starts at + expect(1669746600000, beacon.startsAt); + //expires at + expect(1669746600001, beacon.expiresAt); + //short code + expect("WCQDUR", beacon.shortcode); + }); +} diff --git a/test/model_tests/user_test.dart b/test/model_tests/user_test.dart new file mode 100644 index 0000000..a69b26a --- /dev/null +++ b/test/model_tests/user_test.dart @@ -0,0 +1,162 @@ +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/user/user_info.dart'; +import 'package:test/test.dart'; + +void main() { + //structered according to fetchBeaconDetail Query. + Map dummyJson = { + "_id": "61fd509bf0c4c3219ce356ed", + "name": "test_user", + "email": "test_user@gmail.com", + "location": {"lat": "10", "lon": "20"}, + "beacons": [ + { + "_id": "61fd51b4f0c4c3219ce356f5", + "title": "new_beacon", + "leader": {"name": "test_user"}, + "followers": [ + { + "_id": "61fd509bf0c4c3219ce356ed", + "name": "test_user", + "location": {"lat": "10", "lon": "20"} + } + ], + "landmarks": [ + { + "title": "landmark_one", + "location": {"lat": "1", "lon": "2"} + } + ], + "location": {"lat": "1", "lon": "2"}, + "startsAt": 1669746600000, + "expiresAt": 1669746600001, + "shortcode": "WCQDUR" + } + ], + }; + Map dummyJson2 = { + "_id": "61fd509bf0c4c3219ce356de", + "name": "test_user_two", + "email": "test_user_two@gmail.com", + "location": {"lat": "20", "lon": "10"}, + "beacons": [ + { + "_id": "61fd51b4f0c4c3219ce3565f", + "title": "beacon_two", + "leader": {"name": "test_user_two"}, + "followers": [ + { + "_id": "61fd509bf0c4c3219ce356de", + "name": "test_user_two", + "location": {"lat": "20", "lon": "10"} + } + ], + "landmarks": [ + { + "title": "landmark", + "location": {"lat": "2", "lon": "1"} + } + ], + "location": {"lat": "2", "lon": "1"}, + "startsAt": 1669746600001, + "expiresAt": 1669746600002, + "shortcode": "WCQDUK" + } + ], + }; + + group('Testing User Model', () { + test('User.fromJson method works or not: ', () { + User user = User.fromJson(dummyJson); + Beacon beacon = user.beacon.first; + //user id; + expect("61fd509bf0c4c3219ce356ed", user.id); + //name + expect("test_user", user.name); + //email + expect("test_user@gmail.com", user.email); + //isGuest + expect(false, user.isGuest); + //location + expect("10", user.location.lat); + expect("20", user.location.lon); + //beacon id + expect("61fd51b4f0c4c3219ce356f5", beacon.id); + //title + expect("new_beacon", beacon.title); + //leader name + expect("test_user", beacon.leader.name); + //follower id + expect("61fd509bf0c4c3219ce356ed", beacon.followers.first.id); + //follower name + expect("test_user", beacon.followers.first.name); + //follower location + expect("10", beacon.followers.first.location.lat); + //longitude + expect("20", beacon.followers.first.location.lon); + //landmark + expect("landmark_one", beacon.landmarks.first.title); + expect("1", beacon.landmarks.first.location.lat); + expect("2", beacon.landmarks.first.location.lon); + //beacon location + expect("1", beacon.location.lat); + expect("2", beacon.location.lon); + //starts at + expect(1669746600000, beacon.startsAt); + //expires at + expect(1669746600001, beacon.expiresAt); + //short code + expect("WCQDUR", beacon.shortcode); + }); + + test('Testing if update() method works', () { + User user = User.fromJson(dummyJson); + user.authToken = 'authTokenIntial'; + User updateToUser = User.fromJson(dummyJson2); + updateToUser.authToken = 'FinalAuthToken'; + updateToUser.isGuest = true; + user.update(updateToUser); + Beacon beacon = user.beacon.first; + //auth token + expect("FinalAuthToken", user.authToken); + //userID + expect("61fd509bf0c4c3219ce356ed", user.id); + //name + expect("test_user_two", user.name); + //email + expect("test_user_two@gmail.com", user.email); + //isGuest + expect(true, user.isGuest); + //location + expect("20", user.location.lat); + expect("10", user.location.lon); + //beacon id + expect("61fd51b4f0c4c3219ce3565f", beacon.id); + //title + expect("beacon_two", beacon.title); + //leader name + expect("test_user_two", beacon.leader.name); + //follower id + expect("61fd509bf0c4c3219ce356de", beacon.followers.first.id); + //follower name + expect("test_user_two", beacon.followers.first.name); + //follower location + expect("20", beacon.followers.first.location.lat); + //longitude + expect("10", beacon.followers.first.location.lon); + //landmark + expect("landmark", beacon.landmarks.first.title); + expect("2", beacon.landmarks.first.location.lat); + expect("1", beacon.landmarks.first.location.lon); + //beacon location + expect("2", beacon.location.lat); + expect("1", beacon.location.lon); + //starts at + expect(1669746600001, beacon.startsAt); + //expires at + expect(1669746600002, beacon.expiresAt); + //short code + expect("WCQDUK", beacon.shortcode); + }); + }); +} diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 90a1f50..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,7 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; - -void main() { - testWidgets('Empty test', (WidgetTester tester) async { - // Build our app and trigger a frame. - }); -} From a8d68f060d171b007a9b27e52916bb8415c670c8 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Thu, 24 Mar 2022 16:21:08 +0530 Subject: [PATCH 056/122] Updated compilesdkVersion to support Flutter 2.10 + updated dependencies and pubspec files (#119) * updated pubspec * updated gradle * pubspec.lock updated * tests * updated geolocator * checks * changes in readme * updated pubspec.lock * updated gradle * updates --- README.md | 21 +- android/app/build.gradle | 2 +- android/build.gradle | 4 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- pubspec.lock | 209 ++++++++++-------- pubspec.yaml | 28 ++- 6 files changed, 162 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 9802dac..33f1f31 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,26 @@ This project is a flutter build native interface to ease the group travelling (o ## Getting Started -For setting up the development environment, follow the steps given below. +You can test Beacon in your own development environment. This section shows you how: + +### Prerequisites + +You'll need to set up the IDE and mobile device emulator, or any mobile testing device on your local system. + +**Flutter Environment**: You'll need to have the following installed: +1. [Flutter SDK](https://flutter.dev/docs/get-started/install) +2. [Android Studio](https://developer.android.com/studio) + +***Ensure you are testing the app using Flutter version [2.10](https://docs.flutter.dev/development/tools/sdk/releases?tab=windows) and above.*** + +For checking flutter version: +- Run `flutter --version` in terminal + +If your version is not upto date, follow these steps to upgrade: +- `flutter channel stable` to switch to the channel having stable version of flutter updates +- `flutter upgrade` to get the latest flutter version + +**Development Environment**: For setting up the development environment, follow the steps given below. - Clone this repository after forking using `git clone https://github.com//beacon.git` - `cd` into `beacon` diff --git a/android/app/build.gradle b/android/app/build.gradle index 02ed2f9..1e4fad4 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -26,7 +26,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle" android { - compileSdkVersion 30 + compileSdkVersion 31 buildToolsVersion '29.0.0' sourceSets { diff --git a/android/build.gradle b/android/build.gradle index c505a86..1fe009b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.6.10' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.1.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 939efa2..302da31 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 19332f5..0457f67 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,28 +7,28 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "22.0.0" + version: "31.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "1.7.2" + version: "2.8.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.2" + version: "3.1.11" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" async: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.2.1" build_config: dependency: transitive description: @@ -63,42 +63,42 @@ packages: name: build_daemon url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.1" build_resolvers: dependency: transitive description: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.0.6" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.1.7" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "7.0.0" + version: "7.2.3" built_collection: dependency: transitive description: name: built_collection url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "5.1.1" built_value: dependency: transitive description: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.0.6" + version: "8.1.4" characters: dependency: transitive description: @@ -126,7 +126,7 @@ packages: name: cli_util url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.3.5" clock: dependency: transitive description: @@ -140,7 +140,7 @@ packages: name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.1.0" collection: dependency: transitive description: @@ -149,54 +149,54 @@ packages: source: hosted version: "1.15.0" connectivity_plus: - dependency: transitive + dependency: "direct main" description: name: connectivity_plus url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "2.2.0" connectivity_plus_linux: dependency: transitive description: name: connectivity_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.2.0" connectivity_plus_macos: dependency: transitive description: name: connectivity_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.2.1" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.2.0" connectivity_plus_web: dependency: transitive description: name: connectivity_plus_web url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.2.0" connectivity_plus_windows: dependency: transitive description: name: connectivity_plus_windows url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.2.0" convert: dependency: transitive description: name: convert url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.1" coverage: dependency: transitive description: @@ -217,14 +217,14 @@ packages: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.4" dart_style: dependency: transitive description: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.2.1" data_connection_checker: dependency: "direct main" description: @@ -238,14 +238,14 @@ packages: name: date_time_picker url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" dbus: dependency: transitive description: name: dbus url: "https://pub.dartlang.org" source: hosted - version: "0.6.6" + version: "0.6.8" duration_picker: dependency: "direct main" description: @@ -348,7 +348,7 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.5" flutter_polyline_points: dependency: "direct main" description: @@ -372,14 +372,14 @@ packages: name: fluttertoast url: "https://pub.dartlang.org" source: hosted - version: "8.0.3" + version: "8.0.8" frontend_server_client: dependency: transitive description: name: frontend_server_client url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.2" geocoder: dependency: "direct main" description: @@ -395,21 +395,42 @@ packages: name: geolocator url: "https://pub.dartlang.org" source: hosted - version: "7.0.1" + version: "8.1.1" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "4.0.2" geolocator_web: dependency: transitive description: name: geolocator_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.1.4" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" get_it: dependency: "direct main" description: @@ -423,21 +444,21 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.1.2" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.1.5" gql: dependency: transitive description: @@ -493,42 +514,42 @@ packages: name: graphql url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.0.1-beta.6" graphql_flutter: dependency: "direct main" description: name: graphql_flutter url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.0.1-beta.6" graphs: dependency: transitive description: name: graphs url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" hive: dependency: "direct main" description: name: hive url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" hive_generator: dependency: "direct dev" description: name: hive_generator url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.2" http: dependency: transitive description: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.4" http_multi_server: dependency: transitive description: @@ -549,7 +570,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.1" intl: dependency: "direct main" description: @@ -563,7 +584,7 @@ packages: name: io url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.3" js: dependency: transitive description: @@ -577,7 +598,7 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "4.4.0" lints: dependency: transitive description: @@ -612,7 +633,7 @@ packages: name: logging url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" matcher: dependency: transitive description: @@ -620,6 +641,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.12.11" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.3" meta: dependency: transitive description: @@ -633,7 +661,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" modal_progress_hud: dependency: "direct main" description: @@ -654,7 +682,7 @@ packages: name: nm url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.3" node_preamble: dependency: transitive description: @@ -668,7 +696,7 @@ packages: name: normalize url: "https://pub.dartlang.org" source: hosted - version: "0.5.4" + version: "0.6.0" overlay_support: dependency: "direct main" description: @@ -682,7 +710,7 @@ packages: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path: dependency: transitive description: @@ -696,7 +724,7 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.0.9" path_provider_android: dependency: transitive description: @@ -724,14 +752,14 @@ packages: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.5" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.3" path_provider_windows: dependency: transitive description: @@ -739,34 +767,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.5" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.0" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.1.0" + version: "4.4.0" platform: - dependency: transitive + dependency: "direct overridden" description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.2" pool: dependency: transitive description: @@ -780,7 +801,7 @@ packages: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.4" provider: dependency: "direct main" description: @@ -794,21 +815,21 @@ packages: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" pubspec_parse: dependency: transitive description: name: pubspec_parse url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.2.0" rxdart: dependency: "direct main" description: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.26.0" + version: "0.27.3" share_plus: dependency: "direct main" description: @@ -857,21 +878,35 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.13" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.4" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: @@ -885,21 +920,21 @@ packages: name: shared_preferences_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.3" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.4" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.1.4" + version: "1.2.0" shelf_packages_handler: dependency: transitive description: @@ -934,7 +969,7 @@ packages: name: skeleton_text url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "3.0.0" sky_engine: dependency: transitive description: flutter @@ -953,14 +988,14 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.2.1" source_helper: dependency: transitive description: name: source_helper url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.3.1" source_map_stack_trace: dependency: transitive description: @@ -1023,21 +1058,21 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.17.12" + version: "1.19.5" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.4.8" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.9" timezone: dependency: transitive description: @@ -1128,14 +1163,14 @@ packages: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.8" url_launcher_windows: dependency: transitive description: @@ -1149,7 +1184,7 @@ packages: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "3.0.4" + version: "3.0.5" vector_math: dependency: transitive description: @@ -1170,7 +1205,7 @@ packages: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -1191,21 +1226,21 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "2.3.10" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.2.0+1" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.1.2" + version: "5.3.1" yaml: dependency: transitive description: @@ -1214,5 +1249,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.15.0 <3.0.0" + flutter: ">=2.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index c010283..bc30322 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,8 +9,10 @@ environment: sdk: ">=2.7.0 <3.0.0" dependencies: + connectivity_plus: ^2.2.0 cupertino_icons: ^1.0.2 - date_time_picker: ^2.0.0 + data_connection_checker: ^0.3.4 + date_time_picker: ^2.1.0 duration_picker: ^1.1.0+1 flutter: sdk: flutter @@ -19,37 +21,39 @@ dependencies: flutter_countdown_timer: ^4.1.0 flutter_local_notifications: ^9.2.0 flutter_polyline_points: ^1.0.0 - fluttertoast: ^8.0.3 - data_connection_checker: ^0.3.4 + fluttertoast: ^8.0.8 geocoder: git: url: https://github.com/nguyenxdat/flutter_geocoder.git ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 - geolocator: ^7.0.1 + geolocator: ^8.0.0 get_it: ^7.2.0 - google_maps_flutter: ^2.0.6 + google_maps_flutter: ^2.1.2 graphql_flutter: ^5.0.0 hive: ^2.0.4 intl: ^0.17.0 location: ^4.3.0 modal_progress_hud: ^0.1.3 overlay_support: ^1.2.1 - path_provider: ^2.0.8 + path_provider: ^2.0.9 provider: ^6.0.2 - rxdart: ^0.26.0 + rxdart: ^0.27.3 share_plus: ^3.0.4 - shared_preferences: ^2.0.6 + shared_preferences: ^2.0.13 sizer: ^2.0.15 - skeleton_text: ^1.0.0 + skeleton_text: ^3.0.0 sliding_up_panel: ^2.0.0+1 uni_links: ^0.5.1 +dependency_overrides: + platform: ^3.1.0 + dev_dependencies: - build_runner: ^2.0.4 - flutter_launcher_icons: "^0.9.2" + build_runner: ^2.1.7 + flutter_launcher_icons: ^0.9.2 flutter_test: sdk: flutter - hive_generator: ^1.1.0 + hive_generator: ^1.1.2 test: ^1.14.4 flutter_icons: From 98ac54186e33d549b636538c8361276b1df58069 Mon Sep 17 00:00:00 2001 From: Aditya Pratap Singh Date: Fri, 1 Apr 2022 01:43:51 +0530 Subject: [PATCH 057/122] Changed text on initial login. (#138) --- lib/views/home.dart | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/views/home.dart b/lib/views/home.dart index f145920..1c855e2 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -1,6 +1,5 @@ import 'package:beacon/components/beacon_card.dart'; import 'package:beacon/components/create_join_dialog.dart'; - import 'package:beacon/components/hike_button.dart'; import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/locator.dart'; @@ -261,7 +260,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { text: 'Join', style: - TextStyle(color: kYellow)), + TextStyle(fontWeight: FontWeight.bold)), TextSpan( text: ' a Hike or '), @@ -269,7 +268,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { text: 'Create', style: - TextStyle(color: kYellow)), + TextStyle(fontWeight: FontWeight.bold)), TextSpan( text: ' a new one! '), From 8cab530ce21ed11851c5a5a1a62e49037cfa34cd Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Fri, 1 Apr 2022 01:53:37 +0530 Subject: [PATCH 058/122] Fix: removed deprecated splash warnings (#146) * fix: removed deprecated splash warnings * Update pubspec.lock --- android/app/src/main/AndroidManifest.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 07bce4d..4bf22ad 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -32,10 +32,6 @@ screen fades out. A splash screen is useful to avoid any visual gap between the end of Android's launch screen and the painting of Flutter's first frame. --> - From 5653ee96e9a41f94104fc1dd7e1b1c9140b9c418 Mon Sep 17 00:00:00 2001 From: Vivek Verma <86337946+Omegaviv@users.noreply.github.com> Date: Fri, 1 Apr 2022 01:58:12 +0530 Subject: [PATCH 059/122] created seperate widget for spacing (#145) --- lib/views/auth_screen.dart | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index db19d0e..8324423 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -237,11 +237,7 @@ class _AuthScreenState extends State ), ), ), - Container( - width: 62.w, - height: 0.2.h, - color: Colors.grey[400], - ), + separator(), Container( height: 13.h, padding: EdgeInsets.symmetric( @@ -356,11 +352,7 @@ class _AuthScreenState extends State ), ), ), - Container( - width: 62.w, - height: 0.2.h, - color: Colors.grey[400], - ), + separator(), Container( height: 13.h, padding: EdgeInsets.symmetric( @@ -386,11 +378,7 @@ class _AuthScreenState extends State ), ), ), - Container( - width: 62.w, - height: 0.2.h, - color: Colors.grey[400], - ), + separator(), Container( height: 13.h, padding: EdgeInsets.symmetric( @@ -448,4 +436,12 @@ class _AuthScreenState extends State ), ); } + + Widget separator() { + return Container( + width: 62.w, + height: 0.2.h, + color: Colors.grey[400], + ); + } } From 2a9e63af331db4d15d597ded884df526f43f9790 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Fri, 24 Jun 2022 10:00:59 +0530 Subject: [PATCH 060/122] fix: multiple list reloads (#157) --- lib/components/create_join_dialog.dart | 10 ++++++---- lib/view_model/home_view_model.dart | 6 ++++-- lib/views/home.dart | 26 ++++++++++++++++++++------ 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index e9b5282..4046553 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -8,7 +8,8 @@ import 'package:flutter/material.dart'; import 'package:sizer/sizer.dart'; class CreateJoinBeaconDialog { - static Future createHikeDialog(BuildContext context, HomeViewModel model) { + static Future createHikeDialog( + BuildContext context, HomeViewModel model, Function reloadList) { bool isSmallSized = MediaQuery.of(context).size.height < 800; model.resultingDuration = Duration(minutes: 30); model.durationController = new TextEditingController(); @@ -279,7 +280,7 @@ class CreateJoinBeaconDialog { "Enter a valid date and time!!"); return; } - model.createHikeRoom(); + model.createHikeRoom(reloadList); }), ), ], @@ -293,7 +294,8 @@ class CreateJoinBeaconDialog { ); } - static Future joinBeaconDialog(BuildContext context, HomeViewModel model) { + static Future joinBeaconDialog( + BuildContext context, HomeViewModel model, Function reloadList) { bool isSmallSized = MediaQuery.of(context).size.height < 800; return showDialog( context: context, @@ -347,7 +349,7 @@ class CreateJoinBeaconDialog { buttonColor: kYellow, onTap: () { // navigationService.pop(); - model.joinHikeRoom(); + model.joinHikeRoom(reloadList); }, ), ), diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/home_view_model.dart index c998b90..5b6d658 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/home_view_model.dart @@ -24,7 +24,7 @@ class HomeViewModel extends BaseModel { TextEditingController startsAtTime = new TextEditingController(); String enteredPasskey; - createHikeRoom() async { + createHikeRoom(Function reloadList) async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); validate = AutovalidateMode.always; if (formKeyCreate.currentState.validate()) { @@ -50,6 +50,7 @@ class HomeViewModel extends BaseModel { } else { localNotif.scheduleNotification(beacon); setState(ViewState.idle); + reloadList(); navigationService.showSnackBar( 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); @@ -62,7 +63,7 @@ class HomeViewModel extends BaseModel { } } - joinHikeRoom() async { + joinHikeRoom(Function reloadList) async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); validate = AutovalidateMode.always; if (formKeyJoin.currentState.validate()) { @@ -81,6 +82,7 @@ class HomeViewModel extends BaseModel { } else { localNotif.scheduleNotification(beacon); setState(ViewState.idle); + reloadList(); navigationService.showSnackBar( 'Beacon has not yet started! \nPlease come back at ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}', ); diff --git a/lib/views/home.dart b/lib/views/home.dart index 1c855e2..baaf2e3 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -20,6 +20,8 @@ class MainScreen extends StatefulWidget { } class _MainScreenState extends State with TickerProviderStateMixin { + var fetchingUserBeacons; + var fetchingNearbyBeacons; Future _onPopHome() async { return showDialog( context: context, @@ -56,6 +58,20 @@ class _MainScreenState extends State with TickerProviderStateMixin { ); } + @override + void initState() { + fetchingUserBeacons = databaseFunctions.fetchUserBeacons(); + fetchingNearbyBeacons = databaseFunctions.fetchNearbyBeacon(); + super.initState(); + } + + void reloadList() { + setState(() { + fetchingUserBeacons = databaseFunctions.fetchUserBeacons(); + fetchingNearbyBeacons = databaseFunctions.fetchNearbyBeacon(); + }); + } + @override Widget build(BuildContext context) { return WillPopScope( @@ -147,7 +163,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { 'You need to login with credentials to start a hike'); } else { CreateJoinBeaconDialog.createHikeDialog( - context, model); + context, model, reloadList); } }, ), @@ -166,7 +182,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { buttonColor: Colors.white, onTap: () async { CreateJoinBeaconDialog.joinBeaconDialog( - context, model); + context, model, reloadList); }, ), ), @@ -205,8 +221,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { Padding( padding: const EdgeInsets.all(12.0), child: FutureBuilder( - future: databaseFunctions - .fetchUserBeacons(), + future: fetchingUserBeacons, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { @@ -312,8 +327,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { child: Container( alignment: Alignment.center, child: FutureBuilder( - future: databaseFunctions - .fetchNearbyBeacon(), + future: fetchingNearbyBeacons, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) From 47903f0f62ba9353f434fbd833f92e578dcb9012 Mon Sep 17 00:00:00 2001 From: Harshit Gulgulia <78288704+HarshitGulgulia@users.noreply.github.com> Date: Fri, 24 Jun 2022 10:01:17 +0530 Subject: [PATCH 061/122] Worked on issue #162 Automated the redundancy removal from email entered by the user (#166) * Worked on issue #162 Automated the redundancy removal from email entered by user on login screen * Ran Flutter Format Command --- lib/view_model/auth_screen_model.dart | 2 +- lib/views/auth_screen.dart | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/view_model/auth_screen_model.dart b/lib/view_model/auth_screen_model.dart index 47b7c27..4e27eb7 100644 --- a/lib/view_model/auth_screen_model.dart +++ b/lib/view_model/auth_screen_model.dart @@ -86,7 +86,7 @@ class AuthViewModel extends BaseModel { loginValidate = AutovalidateMode.disabled; await databaseFunctions.init(); final String loginSuccess = await databaseFunctions.login( - email: loginEmailController.text, + email: loginEmailController.text.trimRight(), password: loginPasswordController.text); if (loginSuccess == logSuccess) { userConfig.currentUser.print(); diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index 8324423..db93d3a 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -221,7 +221,8 @@ class _AuthScreenState extends State autovalidateMode: model.loginValidate, focusNode: model.emailLogin, controller: model.loginEmailController, - validator: (value) => Validator.validateEmail(value), + validator: (value) => + Validator.validateEmail(value.trimRight()), keyboardType: TextInputType.emailAddress, style: TextStyle(fontSize: 16.0, color: Colors.black), decoration: InputDecoration( From f9ef249913637dc2850b1e74550c97b7436ab94b Mon Sep 17 00:00:00 2001 From: Kushagra Agarwal <72088481+codewithkushagra@users.noreply.github.com> Date: Fri, 24 Jun 2022 12:59:48 +0530 Subject: [PATCH 062/122] Issue #110 and #163 solved (AlterDialog UI fixes and made loading screen) (#161) * I have made the login pop up edges rounded by a radius of 10.0 * created a loading screen and unified it throughout the app --- lib/components/loading_screen.dart | 39 ++++++++++++++++++++++++++++++ lib/splash_screen.dart | 6 ++--- lib/views/auth_screen.dart | 4 ++- lib/views/hike_screen.dart | 3 ++- lib/views/home.dart | 4 ++- pubspec.lock | 7 ++++++ pubspec.yaml | 1 + 7 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 lib/components/loading_screen.dart diff --git a/lib/components/loading_screen.dart b/lib/components/loading_screen.dart new file mode 100644 index 0000000..9d8ccfe --- /dev/null +++ b/lib/components/loading_screen.dart @@ -0,0 +1,39 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_spinkit/flutter_spinkit.dart'; + +import '../utilities/constants.dart'; + +class LoadingScreen extends StatelessWidget { + const LoadingScreen({Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Container( + decoration: BoxDecoration( + image: DecorationImage( + image: AssetImage('images/hikers_group.png'), + fit: BoxFit.cover, + ), + ), + child: Column( + children: [ + Expanded( + flex: 3, + child: SizedBox() + ), + Expanded( + flex: 1, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: SpinKitThreeBounce(color: kYellow,size: 40,), + ) + ), + ], + ) + ), + ), + ); + } +} diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart index 78ef43e..c862c48 100644 --- a/lib/splash_screen.dart +++ b/lib/splash_screen.dart @@ -6,6 +6,8 @@ import 'package:flutter/services.dart'; import 'package:beacon/locator.dart'; import 'package:uni_links/uni_links.dart'; +import 'components/loading_screen.dart'; + class SplashScreen extends StatefulWidget { const SplashScreen({@required Key key}) : super(key: key); @@ -96,9 +98,7 @@ class _SplashScreenState extends State { Widget build(BuildContext context) { return Scaffold( key: const Key('SplashScreenScaffold'), - body: Center( - child: new Image(image: new AssetImage('images/hikers_group.png')), - ), + body: LoadingScreen(), ); } } diff --git a/lib/views/auth_screen.dart b/lib/views/auth_screen.dart index db93d3a..541fc61 100644 --- a/lib/views/auth_screen.dart +++ b/lib/views/auth_screen.dart @@ -9,6 +9,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:sizer/sizer.dart'; +import '../components/loading_screen.dart'; + class AuthScreen extends StatefulWidget { const AuthScreen({Key key}) : super(key: key); @@ -62,7 +64,7 @@ class _AuthScreenState extends State child: BaseView( builder: (context, model, child) { return (model.isBusy) - ? Scaffold(body: Center(child: CircularProgressIndicator())) + ? LoadingScreen() : new Scaffold( key: model.scaffoldKey, resizeToAvoidBottomInset: true, diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index e2768bd..1631d07 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,3 +1,4 @@ +import 'package:beacon/components/loading_screen.dart'; import 'package:beacon/view_model/hike_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; @@ -39,7 +40,7 @@ class _HikeScreenState extends State { if (!model.modelIsReady) { return Scaffold( body: Center( - child: CircularProgressIndicator(), + child: LoadingScreen(), ), ); } diff --git a/lib/views/home.dart b/lib/views/home.dart index baaf2e3..c3a7823 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -1,6 +1,7 @@ import 'package:beacon/components/beacon_card.dart'; import 'package:beacon/components/create_join_dialog.dart'; import 'package:beacon/components/hike_button.dart'; +import 'package:beacon/components/loading_screen.dart'; import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/locator.dart'; import 'package:beacon/models/beacon/beacon.dart'; @@ -79,7 +80,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { child: BaseView(builder: (context, model, child) { TabController tabController = new TabController(length: 2, vsync: this); return model.isBusy - ? Scaffold(body: Center(child: CircularProgressIndicator())) + ? LoadingScreen() : Scaffold( resizeToAvoidBottomInset: false, body: SafeArea( @@ -98,6 +99,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { onPressed: () => showDialog( context: context, builder: (context) => AlertDialog( + shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0),), actionsAlignment: MainAxisAlignment.spaceEvenly, title: Text( diff --git a/pubspec.lock b/pubspec.lock index 0457f67..64290fe 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -356,6 +356,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + flutter_spinkit: + dependency: "direct main" + description: + name: flutter_spinkit + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" flutter_test: dependency: "direct dev" description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index bc30322..ae57014 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: flutter_countdown_timer: ^4.1.0 flutter_local_notifications: ^9.2.0 flutter_polyline_points: ^1.0.0 + flutter_spinkit: ^5.1.0 fluttertoast: ^8.0.8 geocoder: git: From 9b81f75b5021465bde98b7cc1f6345ec646a9aeb Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Fri, 24 Jun 2022 15:04:02 +0530 Subject: [PATCH 063/122] Feature: Relay beacon to new leader (#122) * initial * user online missing * added more fields in mutation * feat: relay beacon to new leader * small fix * snackbar message improvement * fix: moved code to viewmodel --- lib/components/hike_screen_widget.dart | 30 +++++---------- lib/queries/beacon.dart | 37 ++++++++++++++++++- lib/services/database_mutation_functions.dart | 19 ++++++++++ lib/view_model/hike_screen_model.dart | 18 ++++++++- 4 files changed, 81 insertions(+), 23 deletions(-) diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index e4c93b2..4acb6c3 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -18,7 +18,7 @@ import 'package:share_plus/share_plus.dart'; import 'package:sizer/sizer.dart'; -class HikeScreenWidget { +class HikeScreenWidget extends ChangeNotifier { static copyPasskey(String passkey) { Clipboard.setData(ClipboardData(text: passkey)); Fluttertoast.showToast(msg: 'PASSKEY: $passkey COPIED'); @@ -200,12 +200,6 @@ class HikeScreenWidget { text: 'Long Press on any hiker to hand over the beacon\n', style: TextStyle(fontSize: 16)), - //TODO: enable this once backend has updated. - //Commented, since we dont have the neccessary mutation atm on backend to change the duration. - // TextSpan( - // text: - // 'Double tap on beacon to change the duration\n', - // style: TextStyle(fontSize: 14)), ], ), ), @@ -223,25 +217,21 @@ class HikeScreenWidget { itemCount: model.hikers.length, itemBuilder: (BuildContext context, int index) { return ListTile( - onTap: () { - model.hikers[index].id == userConfig.currentUser.id - ? Fluttertoast.showToast(msg: 'Yeah, that\'s you') - : model.beacon.leader.id == - userConfig.currentUser.id - ? model.relayBeacon(model.hikers[index]) - : Fluttertoast.showToast( - msg: 'You dont have beacon to relay'); + onLongPress: () async { + model.relayBeacon( + model.hikers[index].name, model.hikers[index].id); }, leading: CircleAvatar( backgroundColor: model.isBeaconExpired ? Colors.grey : kYellow, radius: 18, child: ClipRRect( - borderRadius: BorderRadius.circular(50), - child: Icon( - Icons.person_outline, - color: Colors.white, - )), + borderRadius: BorderRadius.circular(50), + child: Icon( + Icons.person_outline, + color: Colors.white, + ), + ), ), title: Text( model.hikers[index].name, diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index 33f230a..5f5b08a 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -1,6 +1,41 @@ import 'package:graphql_flutter/graphql_flutter.dart'; class BeaconQueries { + String changeLeader(String beaconID, String newLeaderID) { + return ''' + mutation{ + changeLeader (beaconID:"$beaconID" ,newLeaderID: "$newLeaderID") + { + _id + title + shortcode + leader { + _id + name + } + location{ + lat + lon + } + followers { + _id + name + } + startsAt + expiresAt + landmarks { + title + location { + lat + lon + } + } + } + } + } + '''; + } + String createBeacon( String title, int startsAt, int expiresAt, String lat, String lon) { return ''' @@ -188,7 +223,7 @@ class BeaconQueries { } '''); - // Gql for oreder updated subscription. + // Gql for order updated subscription. final beaconJoinedSubGql = gql(r''' subscription StreamNewlyJoinedBeacons($id: ID!){ beaconJoined(id: $id){ diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index 09a46a1..cf113ae 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -370,4 +370,23 @@ class DataBaseMutationFunctions { } return _nearbyBeacons; } + + Future changeLeader(String beaconID, String newLeaderID) async { + await clientAuth + .mutate(MutationOptions( + document: gql(_beaconQuery.changeLeader(beaconID, newLeaderID)))) + .then((value) { + if (value.hasException) { + navigationService.showSnackBar( + "Something went wrong: ${value.exception.graphqlErrors.first.message}"); + print("Something went wrong: ${value.exception}"); + } else if (value.data != null && value.isConcrete) { + final Beacon changedLeader = + Beacon.fromJson(value.data['changeLeader'] as Map); + return changedLeader; + } + return null; + }); + return null; + } } diff --git a/lib/view_model/hike_screen_model.dart b/lib/view_model/hike_screen_model.dart index 796b362..23a5d7d 100644 --- a/lib/view_model/hike_screen_model.dart +++ b/lib/view_model/hike_screen_model.dart @@ -49,8 +49,22 @@ class HikeScreenViewModel extends BaseModel { final List mergedStreamSubscriptions = []; bool isLeader = false; - void relayBeacon(User newHolder) { - Fluttertoast.showToast(msg: 'Beacon handed over to $newHolder'); + void relayBeacon(String newLeaderName, String newLeaderID) async { + print(newLeaderID); + if (newLeaderID == userConfig.currentUser.id) + Fluttertoast.showToast(msg: 'Yeah, that\'s you'); + else { + if (beacon.leader.id == userConfig.currentUser.id) { + await databaseFunctions.init(); + final changedLeader = + databaseFunctions.changeLeader(beacon.id, newLeaderID); + if (changedLeader != null) beacon.leader.id = newLeaderID; + Fluttertoast.showToast(msg: 'Beacon handed over to $newLeaderName'); + notifyListeners(); + } else { + Fluttertoast.showToast(msg: 'You dont have beacon to relay'); + } + } } Future onWillPop(context) async { From 953aca8cbed62d42cf138ad39f3c9b3ecbb4b542 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Fri, 24 Jun 2022 15:04:14 +0530 Subject: [PATCH 064/122] Changes for Flutter 3.0 (#167) * changes for Flutter 3.0 * updated dev dependency * Temp fix to failing CI * removed overridden platform dependency --- .github/workflows/flutter-ci.yml | 8 +- pubspec.lock | 238 +++++++++++++++---------------- pubspec.yaml | 10 +- 3 files changed, 129 insertions(+), 127 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index efa8c7e..0815a67 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -19,7 +19,9 @@ jobs: java-version: "12.x" - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.0' + # Temporary fix to failing CI + flutter-version: '3.0.1' + # channel: "stable" - run: flutter pub get - run: flutter format --set-exit-if-changed . - run: flutter analyze . @@ -37,7 +39,9 @@ jobs: java-version: "12.x" - uses: subosito/flutter-action@v1 with: - flutter-version: '2.5.0' + # Temporary fix to failing CI + flutter-version: '3.0.1' + # channel: "stable" - run: flutter pub get - run: flutter format --set-exit-if-changed . - run: flutter analyze . diff --git a/pubspec.lock b/pubspec.lock index 64290fe..abc50cc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,28 +7,28 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "31.0.0" + version: "40.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "2.8.0" + version: "4.1.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.11" + version: "3.3.0" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.3.0" + version: "2.3.1" async: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.3.0" build_config: dependency: transitive description: @@ -63,21 +63,21 @@ packages: name: build_daemon url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.1.0" build_resolvers: dependency: transitive description: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.9" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.1.7" + version: "2.1.11" build_runner_core: dependency: transitive description: @@ -98,7 +98,7 @@ packages: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.1.4" + version: "8.3.2" characters: dependency: transitive description: @@ -120,13 +120,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" - cli_util: - dependency: transitive - description: - name: cli_util - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.5" clock: dependency: transitive description: @@ -147,84 +140,84 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0" + version: "1.16.0" connectivity_plus: dependency: "direct main" description: name: connectivity_plus url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.4" connectivity_plus_linux: dependency: transitive description: name: connectivity_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.1" connectivity_plus_macos: dependency: transitive description: name: connectivity_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.2.3" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" connectivity_plus_web: dependency: transitive description: name: connectivity_plus_web url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.2" connectivity_plus_windows: dependency: transitive description: name: connectivity_plus_windows url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.2" convert: dependency: transitive description: name: convert url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.2" coverage: dependency: transitive description: name: coverage url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.3.2" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.2" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "1.0.5" dart_style: dependency: transitive description: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "2.2.3" data_connection_checker: dependency: "direct main" description: @@ -245,7 +238,7 @@ packages: name: dbus url: "https://pub.dartlang.org" source: hosted - version: "0.6.8" + version: "0.7.5" duration_picker: dependency: "direct main" description: @@ -259,14 +252,14 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" ffi: dependency: transitive description: name: ffi url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "2.0.0" file: dependency: transitive description: @@ -280,7 +273,7 @@ packages: name: fixnum url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" flutter: dependency: "direct main" description: flutter @@ -307,13 +300,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.1.0" + flutter_hooks: + dependency: transitive + description: + name: flutter_hooks + url: "https://pub.dartlang.org" + source: hosted + version: "0.18.4" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.9.2" + version: "0.9.3" flutter_lints: dependency: transitive description: @@ -327,14 +327,14 @@ packages: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "9.2.0" + version: "9.6.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux url: "https://pub.dartlang.org" source: hosted - version: "0.4.1+1" + version: "0.5.0+1" flutter_local_notifications_platform_interface: dependency: transitive description: @@ -348,7 +348,7 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.6" flutter_polyline_points: dependency: "direct main" description: @@ -379,14 +379,14 @@ packages: name: fluttertoast url: "https://pub.dartlang.org" source: hosted - version: "8.0.8" + version: "8.0.9" frontend_server_client: dependency: transitive description: name: frontend_server_client url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.3" geocoder: dependency: "direct main" description: @@ -402,42 +402,42 @@ packages: name: geolocator url: "https://pub.dartlang.org" source: hosted - version: "8.1.1" + version: "8.2.1" geolocator_android: dependency: transitive description: name: geolocator_android url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.2.0" geolocator_apple: dependency: transitive description: name: geolocator_apple url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.2.0" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.0.2" + version: "4.0.5" geolocator_web: dependency: transitive description: name: geolocator_web url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.5" geolocator_windows: dependency: transitive description: name: geolocator_windows url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.1.1" get_it: dependency: "direct main" description: @@ -458,77 +458,77 @@ packages: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.7" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "2.1.7" gql: dependency: transitive description: name: gql url: "https://pub.dartlang.org" source: hosted - version: "0.13.0" + version: "0.13.1" gql_dedupe_link: dependency: transitive description: name: gql_dedupe_link url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" gql_error_link: dependency: transitive description: name: gql_error_link url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.2.2" gql_exec: dependency: transitive description: name: gql_exec url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.4.0" gql_http_link: dependency: transitive description: name: gql_http_link url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.4.2" gql_link: dependency: transitive description: name: gql_link url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.4.2" gql_transform_link: dependency: transitive description: name: gql_transform_link url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.2.2" graphql: dependency: transitive description: name: graphql url: "https://pub.dartlang.org" source: hosted - version: "5.0.1-beta.6" + version: "5.1.1" graphql_flutter: dependency: "direct main" description: name: graphql_flutter url: "https://pub.dartlang.org" source: hosted - version: "5.0.1-beta.6" + version: "5.1.0" graphs: dependency: transitive description: @@ -542,14 +542,14 @@ packages: name: hive url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.2.2" hive_generator: dependency: "direct dev" description: name: hive_generator url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.1.3" http: dependency: transitive description: @@ -563,21 +563,21 @@ packages: name: http_multi_server url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.2.0" http_parser: dependency: transitive description: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "4.0.0" + version: "4.0.1" image: dependency: transitive description: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.1.1" + version: "3.2.0" intl: dependency: "direct main" description: @@ -598,14 +598,14 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.3" + version: "0.6.4" json_annotation: dependency: transitive description: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "4.4.0" + version: "4.5.0" lints: dependency: transitive description: @@ -619,7 +619,7 @@ packages: name: location url: "https://pub.dartlang.org" source: hosted - version: "4.3.0" + version: "4.4.0" location_platform_interface: dependency: transitive description: @@ -654,7 +654,7 @@ packages: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "0.1.4" meta: dependency: transitive description: @@ -668,7 +668,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" modal_progress_hud: dependency: "direct main" description: @@ -689,7 +689,7 @@ packages: name: nm url: "https://pub.dartlang.org" source: hosted - version: "0.4.3" + version: "0.5.0" node_preamble: dependency: transitive description: @@ -703,14 +703,14 @@ packages: name: normalize url: "https://pub.dartlang.org" source: hosted - version: "0.6.0" + version: "0.6.0+1" overlay_support: dependency: "direct main" description: name: overlay_support url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "2.0.1" package_config: dependency: transitive description: @@ -724,65 +724,65 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" path_provider: dependency: "direct main" description: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.9" + version: "2.0.11" path_provider_android: dependency: transitive description: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.11" + version: "2.0.14" path_provider_ios: dependency: transitive description: name: path_provider_ios url: "https://pub.dartlang.org" source: hosted - version: "2.0.7" + version: "2.0.9" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "2.1.7" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.0.6" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.0.4" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.1.0" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.4.0" + version: "5.0.0" platform: - dependency: "direct overridden" + dependency: transitive description: name: platform url: "https://pub.dartlang.org" @@ -815,14 +815,14 @@ packages: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.2" + version: "6.0.3" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" pubspec_parse: dependency: transitive description: @@ -836,84 +836,84 @@ packages: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.27.3" + version: "0.27.4" share_plus: dependency: "direct main" description: name: share_plus url: "https://pub.dartlang.org" source: hosted - version: "3.0.4" + version: "4.0.8" share_plus_linux: dependency: transitive description: name: share_plus_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "3.0.0" share_plus_macos: dependency: transitive description: name: share_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "3.0.1" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "3.0.3" share_plus_web: dependency: transitive description: name: share_plus_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "3.0.1" share_plus_windows: dependency: transitive description: name: share_plus_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "3.0.1" shared_preferences: dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "2.0.13" + version: "2.0.15" shared_preferences_android: dependency: transitive description: name: shared_preferences_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.10" + version: "2.0.12" shared_preferences_ios: dependency: transitive description: name: shared_preferences_ios url: "https://pub.dartlang.org" source: hosted - version: "2.0.9" + version: "2.1.1" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.1.1" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.4" shared_preferences_platform_interface: dependency: transitive description: @@ -927,21 +927,21 @@ packages: name: shared_preferences_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.0.4" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.1.1" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.0" shelf_packages_handler: dependency: transitive description: @@ -995,14 +995,14 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.2.2" source_helper: dependency: transitive description: name: source_helper url: "https://pub.dartlang.org" source: hosted - version: "1.3.1" + version: "1.3.2" source_map_stack_trace: dependency: transitive description: @@ -1023,7 +1023,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" stack_trace: dependency: transitive description: @@ -1065,21 +1065,21 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.19.5" + version: "1.21.1" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.9" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.4.9" + version: "0.4.13" timezone: dependency: transitive description: @@ -1100,7 +1100,7 @@ packages: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" uni_links: dependency: "direct main" description: @@ -1135,35 +1135,35 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.18" + version: "6.1.3" url_launcher_android: dependency: transitive description: name: url_launcher_android url: "https://pub.dartlang.org" source: hosted - version: "6.0.14" + version: "6.0.17" url_launcher_ios: dependency: transitive description: name: url_launcher_ios url: "https://pub.dartlang.org" source: hosted - version: "6.0.14" + version: "6.0.17" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "3.0.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "3.0.1" url_launcher_platform_interface: dependency: transitive description: @@ -1177,35 +1177,35 @@ packages: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.8" + version: "2.0.11" url_launcher_windows: dependency: transitive description: name: url_launcher_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "3.0.1" uuid: dependency: transitive description: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "3.0.5" + version: "3.0.6" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.2" vm_service: dependency: transitive description: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "7.5.0" + version: "8.3.0" watcher: dependency: transitive description: @@ -1219,21 +1219,21 @@ packages: name: web_socket_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.2.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0" win32: dependency: transitive description: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.3.10" + version: "2.7.0" xdg_directories: dependency: transitive description: @@ -1247,14 +1247,14 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.3.1" + version: "6.1.0" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "3.1.0" + version: "3.1.1" sdks: - dart: ">=2.15.0 <3.0.0" - flutter: ">=2.10.0" + dart: ">=2.17.0 <3.0.0" + flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index ae57014..9c38407 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,24 +30,22 @@ dependencies: geolocator: ^8.0.0 get_it: ^7.2.0 google_maps_flutter: ^2.1.2 - graphql_flutter: ^5.0.0 + graphql_flutter: ^5.1.0 hive: ^2.0.4 intl: ^0.17.0 location: ^4.3.0 modal_progress_hud: ^0.1.3 - overlay_support: ^1.2.1 + overlay_support: ^2.0.1 path_provider: ^2.0.9 provider: ^6.0.2 rxdart: ^0.27.3 - share_plus: ^3.0.4 + share_plus: ^4.0.8 shared_preferences: ^2.0.13 sizer: ^2.0.15 skeleton_text: ^3.0.0 sliding_up_panel: ^2.0.0+1 uni_links: ^0.5.1 -dependency_overrides: - platform: ^3.1.0 dev_dependencies: build_runner: ^2.1.7 @@ -55,7 +53,7 @@ dev_dependencies: flutter_test: sdk: flutter hive_generator: ^1.1.2 - test: ^1.14.4 + test: ^1.21.1 flutter_icons: android: "launcher_icon" From be1a0e508a465f8746d5272716445bb96f44b61d Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Fri, 24 Jun 2022 20:10:54 +0530 Subject: [PATCH 065/122] Resolved formatting issues in pipeline (#168) * resolved formatting issues in pipeline * pubspec changes * build updates --- lib/components/loading_screen.dart | 16 +++++------ lib/views/home.dart | 5 +++- pubspec.lock | 46 +++++++++++++++--------------- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/lib/components/loading_screen.dart b/lib/components/loading_screen.dart index 9d8ccfe..7633bc7 100644 --- a/lib/components/loading_screen.dart +++ b/lib/components/loading_screen.dart @@ -19,20 +19,18 @@ class LoadingScreen extends StatelessWidget { ), child: Column( children: [ - Expanded( - flex: 3, - child: SizedBox() - ), + Expanded(flex: 3, child: SizedBox()), Expanded( flex: 1, child: Padding( padding: const EdgeInsets.all(8.0), - child: SpinKitThreeBounce(color: kYellow,size: 40,), - ) - ), + child: SpinKitThreeBounce( + color: kYellow, + size: 40, + ), + )), ], - ) - ), + )), ), ); } diff --git a/lib/views/home.dart b/lib/views/home.dart index c3a7823..aeca1d8 100644 --- a/lib/views/home.dart +++ b/lib/views/home.dart @@ -99,7 +99,10 @@ class _MainScreenState extends State with TickerProviderStateMixin { onPressed: () => showDialog( context: context, builder: (context) => AlertDialog( - shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0),), + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(10.0), + ), actionsAlignment: MainAxisAlignment.spaceEvenly, title: Text( diff --git a/pubspec.lock b/pubspec.lock index abc50cc..b5fc2c8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -98,7 +98,7 @@ packages: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.3.2" + version: "8.3.3" characters: dependency: transitive description: @@ -147,7 +147,7 @@ packages: name: connectivity_plus url: "https://pub.dartlang.org" source: hosted - version: "2.3.4" + version: "2.3.5" connectivity_plus_linux: dependency: transitive description: @@ -161,7 +161,7 @@ packages: name: connectivity_plus_macos url: "https://pub.dartlang.org" source: hosted - version: "1.2.3" + version: "1.2.4" connectivity_plus_platform_interface: dependency: transitive description: @@ -259,7 +259,7 @@ packages: name: ffi url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" file: dependency: transitive description: @@ -306,7 +306,7 @@ packages: name: flutter_hooks url: "https://pub.dartlang.org" source: hosted - version: "0.18.4" + version: "0.18.5+1" flutter_launcher_icons: dependency: "direct dev" description: @@ -327,7 +327,7 @@ packages: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "9.6.0" + version: "9.6.1" flutter_local_notifications_linux: dependency: transitive description: @@ -409,7 +409,7 @@ packages: name: geolocator_android url: "https://pub.dartlang.org" source: hosted - version: "3.2.0" + version: "3.2.1" geolocator_apple: dependency: transitive description: @@ -451,21 +451,21 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.1.0" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.1.7" + version: "2.1.8" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.7" + version: "2.2.0" gql: dependency: transitive description: @@ -563,7 +563,7 @@ packages: name: http_multi_server url: "https://pub.dartlang.org" source: hosted - version: "3.2.0" + version: "3.2.1" http_parser: dependency: transitive description: @@ -717,7 +717,7 @@ packages: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.1.0" path: dependency: transitive description: @@ -738,14 +738,14 @@ packages: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.14" + version: "2.0.15" path_provider_ios: dependency: transitive description: name: path_provider_ios url: "https://pub.dartlang.org" source: hosted - version: "2.0.9" + version: "2.0.10" path_provider_linux: dependency: transitive description: @@ -801,7 +801,7 @@ packages: name: pool url: "https://pub.dartlang.org" source: hosted - version: "1.5.0" + version: "1.5.1" process: dependency: transitive description: @@ -843,7 +843,7 @@ packages: name: share_plus url: "https://pub.dartlang.org" source: hosted - version: "4.0.8" + version: "4.0.9" share_plus_linux: dependency: transitive description: @@ -941,28 +941,28 @@ packages: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.1" shelf_static: dependency: transitive description: name: shelf_static url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" sizer: dependency: "direct main" description: @@ -1135,7 +1135,7 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.1.3" + version: "6.1.4" url_launcher_android: dependency: transitive description: @@ -1170,14 +1170,14 @@ packages: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.1.0" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.11" + version: "2.0.12" url_launcher_windows: dependency: transitive description: From c3dcbeb3304fb23d1e5d5a95dcf9272bb646d40d Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Tue, 18 Oct 2022 00:05:24 +0530 Subject: [PATCH 066/122] feat: N beacon 1 Group (#169) * model changes * added group in models * queries updated * queries updated * model changes * service changes * constants updated * yaml file updated * routing changes * readme updates * debugged model changes * queries updated * components added * mutation functions primary * view model additions * screen additions * flutter analyze error resolved * showing user beacons in group screen * back from hike to group screen * todo navigation changes * flutter analyze issues * Flutter version Updated minimum required Flutter version in Readme --- README.md | 5 +- lib/components/create_join_dialog.dart | 156 ++++++- lib/components/dialog_boxes.dart | 11 +- lib/components/group_card.dart | 182 ++++++++ lib/locator.dart | 4 +- lib/models/beacon/beacon.dart | 10 +- lib/models/beacon/beacon.g.dart | 7 +- lib/models/group/group.dart | 59 +++ lib/models/group/group.g.dart | 56 +++ lib/models/user/user_info.dart | 13 +- lib/models/user/user_info.g.dart | 11 +- lib/queries/auth.dart | 16 + lib/queries/beacon.dart | 27 +- lib/queries/group.dart | 143 ++++++ lib/router.dart | 9 +- lib/services/database_mutation_functions.dart | 142 +++++- lib/services/hive_localdb.dart | 7 +- lib/utilities/constants.dart | 1 + ...odel.dart => group_screen_view_model.dart} | 13 +- lib/view_model/home_screen_view_model.dart | 72 +++ lib/views/group_screen.dart | 409 ++++++++++++++++++ lib/views/hike_screen.dart | 4 +- lib/views/{home.dart => home_screen.dart} | 125 +----- pubspec.yaml | 3 +- 24 files changed, 1334 insertions(+), 151 deletions(-) create mode 100644 lib/components/group_card.dart create mode 100644 lib/models/group/group.dart create mode 100644 lib/models/group/group.g.dart create mode 100644 lib/queries/group.dart rename lib/view_model/{home_view_model.dart => group_screen_view_model.dart} (93%) create mode 100644 lib/view_model/home_screen_view_model.dart create mode 100644 lib/views/group_screen.dart rename lib/views/{home.dart => home_screen.dart} (73%) diff --git a/README.md b/README.md index 33f1f31..a0e6a47 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ You'll need to set up the IDE and mobile device emulator, or any mobile testing 1. [Flutter SDK](https://flutter.dev/docs/get-started/install) 2. [Android Studio](https://developer.android.com/studio) -***Ensure you are testing the app using Flutter version [2.10](https://docs.flutter.dev/development/tools/sdk/releases?tab=windows) and above.*** +***Ensure you are testing the app using Flutter version [3.0.1](https://docs.flutter.dev/development/tools/sdk/releases?tab=windows) and above.*** For checking flutter version: - Run `flutter --version` in terminal @@ -48,7 +48,7 @@ beacon/lib/ ├── components/ # Shared Components such as dialog boxes, button, and other shared widgets ├── enums/ # enum files | └── view_state.dart # defines view states i.e Idle, Busy, Error -├── models/ # model classes: beacon, location, landmark, user +├── models/ # model classes: group, beacon, location, landmark, user ├── queries/ # includes all graphql query strings ├── services/ # services | ├── database_mutation_function.dart/ # Graphql Queries implementations @@ -59,6 +59,7 @@ beacon/lib/ | ├── auth_screen.dart | ├── base_view.dart | ├── hike_screen.dart +| ├── group_screen.dart | ├── home.dart ├── viewmodels/ # Viewmodels layer ├── splash_screen.dart # Very first screen displayed whilst data is loading diff --git a/lib/components/create_join_dialog.dart b/lib/components/create_join_dialog.dart index 4046553..5eca5a3 100644 --- a/lib/components/create_join_dialog.dart +++ b/lib/components/create_join_dialog.dart @@ -2,14 +2,160 @@ import 'package:beacon/locator.dart'; import 'package:beacon/services/validators.dart'; import 'package:beacon/components/hike_button.dart'; import 'package:beacon/utilities/constants.dart'; -import 'package:beacon/view_model/home_view_model.dart'; +import 'package:beacon/view_model/group_screen_view_model.dart'; import 'package:duration_picker/duration_picker.dart'; import 'package:flutter/material.dart'; import 'package:sizer/sizer.dart'; +import '../view_model/home_screen_view_model.dart'; + +class CreateJoinGroupDialog { + static Future createGroupDialog(BuildContext context, HomeViewModel model) { + bool isSmallSized = MediaQuery.of(context).size.height < 800; + return showDialog( + context: context, + builder: (context) => GestureDetector( + onTap: () => FocusManager.instance.primaryFocus?.unfocus(), + child: Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + child: SingleChildScrollView( + child: Form( + key: model.formKeyCreate, + child: Container( + height: isSmallSized ? 35.h : 25.h, + child: Padding( + padding: + const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + height: isSmallSized ? 12.h : 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: TextFormField( + style: TextStyle(fontSize: 22.0), + validator: (value) => + Validator.validateBeaconTitle(value), + onChanged: (name) { + model.title = name; + }, + decoration: InputDecoration( + border: InputBorder.none, + hintText: 'Enter Title Here', + labelStyle: TextStyle( + fontSize: labelsize, color: kYellow), + hintStyle: TextStyle( + fontSize: hintsize, color: hintColor), + labelText: 'Title', + alignLabelWithHint: true, + floatingLabelBehavior: + FloatingLabelBehavior.always, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + flex: 2, + child: HikeButton( + text: 'Create Group', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + // FocusManager.instance.primaryFocus?.unfocus(); + // navigationService.pop(); + model.createGroupRoom(); + }), + ), + ], + ), + ), + ), + ), + ), + ), + ), + ); + } + + static Future joinGroupDialog(BuildContext context, HomeViewModel model) { + bool isSmallSized = MediaQuery.of(context).size.height < 800; + return showDialog( + context: context, + builder: (context) => Dialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + child: Form( + key: model.formKeyJoin, + child: Container( + height: isSmallSized ? 35.h : 25.h, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + child: Column( + children: [ + Container( + height: isSmallSized ? 12.h : 10.h, + child: Padding( + padding: const EdgeInsets.all(4.0), + child: TextFormField( + keyboardType: TextInputType.text, + textCapitalization: TextCapitalization.characters, + style: TextStyle(fontSize: 22.0), + validator: (value) => Validator.validatePasskey(value), + onChanged: (key) { + model.enteredGroupCode = key.toUpperCase(); + }, + decoration: InputDecoration( + alignLabelWithHint: true, + floatingLabelBehavior: FloatingLabelBehavior.always, + hintText: 'Enter Group Code Here', + hintStyle: + TextStyle(fontSize: hintsize, color: hintColor), + labelText: 'Code', + labelStyle: + TextStyle(fontSize: labelsize, color: kYellow), + border: InputBorder.none, + ), + ), + ), + color: kLightBlue, + ), + SizedBox( + height: 2.h, + ), + Flexible( + child: HikeButton( + text: 'Join Group', + textSize: 18.0, + textColor: Colors.white, + buttonColor: kYellow, + onTap: () { + // navigationService.pop(); + model.joinGroupRoom(); + }, + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} + class CreateJoinBeaconDialog { - static Future createHikeDialog( - BuildContext context, HomeViewModel model, Function reloadList) { + static Future createHikeDialog(BuildContext context, GroupViewModel model, + Function reloadList, String groupID) { bool isSmallSized = MediaQuery.of(context).size.height < 800; model.resultingDuration = Duration(minutes: 30); model.durationController = new TextEditingController(); @@ -280,7 +426,7 @@ class CreateJoinBeaconDialog { "Enter a valid date and time!!"); return; } - model.createHikeRoom(reloadList); + model.createHikeRoom(groupID, reloadList); }), ), ], @@ -295,7 +441,7 @@ class CreateJoinBeaconDialog { } static Future joinBeaconDialog( - BuildContext context, HomeViewModel model, Function reloadList) { + BuildContext context, GroupViewModel model, Function reloadList) { bool isSmallSized = MediaQuery.of(context).size.height < 800; return showDialog( context: context, diff --git a/lib/components/dialog_boxes.dart b/lib/components/dialog_boxes.dart index 6824be7..16f2fb3 100644 --- a/lib/components/dialog_boxes.dart +++ b/lib/components/dialog_boxes.dart @@ -1,5 +1,4 @@ import 'package:beacon/components/hike_button.dart'; -import 'package:beacon/locator.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:flutter/material.dart'; import 'package:sizer/sizer.dart'; @@ -35,9 +34,13 @@ class DialogBoxes { HikeButton( buttonHeight: 2.5.h, buttonWidth: 8.w, - onTap: () { - navigationService.removeAllAndPush('/main', '/'); - }, + onTap: () => Navigator.of(context).pop(true), + //TODO: + // onTap: () { + // navigationService.removeAllAndPush('/groupScreen', '/', + // arguments: GroupScreen( + // group, + // )); text: 'Yes', textSize: 18.0, ), diff --git a/lib/components/group_card.dart b/lib/components/group_card.dart new file mode 100644 index 0000000..b6eb46d --- /dev/null +++ b/lib/components/group_card.dart @@ -0,0 +1,182 @@ +import 'package:beacon/locator.dart'; +import 'package:beacon/utilities/constants.dart'; +import 'package:flutter/material.dart'; +import 'package:sizer/sizer.dart'; +import 'package:skeleton_text/skeleton_text.dart'; + +import '../models/group/group.dart'; +import '../views/group_screen.dart'; + +class GroupCustomWidgets { + static final Color textColor = Color(0xFFAFAFAF); + + static Widget getGroupCard(BuildContext context, Group group) { + String noMembers = group.members.length.toString(); + String noBeacons = group.beacons.length.toString(); + return GestureDetector( + onTap: () async { + bool isMember = false; + for (var i in group.members) { + if (i.id == userConfig.currentUser.id) { + isMember = true; + } + } + if (group.leader.id == userConfig.currentUser.id || isMember) { + navigationService.pushScreen('/groupScreen', + arguments: GroupScreen( + group, + )); + } else { + await databaseFunctions.init(); + final Group _group = + await databaseFunctions.joinGroup(group.shortcode); + if (_group != null) { + navigationService.pushScreen('/groupScreen', + arguments: GroupScreen(group)); + } + //Snackbar is displayed by joinBeacon itself on any error or trying to join expired beacon. + } + }, + child: Container( + margin: const EdgeInsets.symmetric( + vertical: 10.0, + horizontal: 10.0, + ), + padding: EdgeInsets.only(left: 16.0, right: 16.0, bottom: 8, top: 8), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 70.w, + child: Text( + '${group?.title} by ${group.leader.name} ', + style: Style.titleTextStyle, + ), + ), + SizedBox(height: 4.0), + Text( + 'Group has $noMembers members ', + style: Style.commonTextStyle, + ), + SizedBox(height: 4.0), + Text( + 'Group has $noBeacons beacons ', + style: Style.commonTextStyle, + ), + SizedBox(height: 4.0), + Text('Passkey: ${group?.shortcode}', + style: Style.commonTextStyle), + ], + ), + ], + ), + decoration: BoxDecoration( + color: kBlue, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + boxShadow: [ + BoxShadow( + color: Colors.black26, + blurRadius: 10.0, + offset: Offset(0.0, 10.0), + ), + ], + ), + ), + ); + } + + static ListView getPlaceholder() { + final BorderRadius borderRadius = BorderRadius.circular(10.0); + return ListView.builder( + scrollDirection: Axis.vertical, + physics: BouncingScrollPhysics(), + itemCount: 3, + padding: const EdgeInsets.all(8.0), + itemBuilder: (BuildContext context, int index) { + return Container( + margin: const EdgeInsets.symmetric( + vertical: 10.0, + horizontal: 10.0, + ), + height: 110, + decoration: BoxDecoration( + color: kBlue, + shape: BoxShape.rectangle, + borderRadius: BorderRadius.circular(8.0), + boxShadow: [ + BoxShadow( + color: Colors.black26, + blurRadius: 10.0, + offset: Offset(0.0, 10.0), + ), + ], + ), + padding: + EdgeInsets.only(left: 16.0, right: 16.0, bottom: 10, top: 10), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: const EdgeInsets.only( + left: 15.0, bottom: 10.0, right: 15.0), + child: ClipRRect( + borderRadius: borderRadius, + child: SkeletonAnimation( + child: Container( + height: 15.0, + decoration: BoxDecoration(color: shimmerSkeletonColor), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only( + left: 15.0, right: 30.0, bottom: 10.0), + child: ClipRRect( + borderRadius: borderRadius, + child: SkeletonAnimation( + child: Container( + height: 10.0, + decoration: BoxDecoration(color: shimmerSkeletonColor), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only( + left: 15.0, right: 45.0, bottom: 10.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(10.0), + child: SkeletonAnimation( + child: Container( + height: 10.0, + decoration: BoxDecoration(color: shimmerSkeletonColor), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(left: 15.0, right: 60.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(10.0), + child: SkeletonAnimation( + child: Container( + height: 10.0, + decoration: BoxDecoration(color: shimmerSkeletonColor), + ), + ), + ), + ), + ], + ), + ); + }); + } +} diff --git a/lib/locator.dart b/lib/locator.dart index 768ee25..eab97ab 100644 --- a/lib/locator.dart +++ b/lib/locator.dart @@ -7,8 +7,9 @@ import 'package:beacon/services/local_notification.dart'; import 'package:beacon/services/navigation_service.dart'; import 'package:beacon/services/user_config.dart'; import 'package:beacon/view_model/auth_screen_model.dart'; +import 'package:beacon/view_model/home_screen_view_model.dart'; import 'package:beacon/view_model/hike_screen_model.dart'; -import 'package:beacon/view_model/home_view_model.dart'; +import 'package:beacon/view_model/group_screen_view_model.dart'; import 'package:get_it/get_it.dart'; GetIt locator = GetIt.instance; @@ -41,6 +42,7 @@ void setupLocator() { locator.registerFactory(() => AuthViewModel()); locator.registerFactory(() => HomeViewModel()); locator.registerFactory(() => HikeScreenViewModel()); + locator.registerFactory(() => GroupViewModel()); //local Notification locator.registerSingleton(LocalNotification()); diff --git a/lib/models/beacon/beacon.dart b/lib/models/beacon/beacon.dart index a2487e6..f260258 100644 --- a/lib/models/beacon/beacon.dart +++ b/lib/models/beacon/beacon.dart @@ -3,6 +3,7 @@ import 'package:beacon/models/location/location.dart'; import 'package:beacon/models/user/user_info.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; + part 'beacon.g.dart'; @HiveType(typeId: 3) @@ -17,7 +18,8 @@ class Beacon extends HiveObject { this.followers, this.route, this.landmarks, - this.location}); + this.location, + this.group}); factory Beacon.fromJson(Map json) { return Beacon( @@ -47,6 +49,10 @@ class Beacon extends HiveObject { .map((e) => Landmark.fromJson(e as Map)) .toList() : [], + // group: json['group'] != null + // ? Group.fromJson(json['group'] as Map) + // : null, + group: json['group'] != null ? json['group']['_id'] : null, ); } @@ -70,6 +76,8 @@ class Beacon extends HiveObject { List landmarks = []; @HiveField(9) Location location; + @HiveField(10) + String group; print() { debugPrint('shortCode: ${this.shortcode}'); diff --git a/lib/models/beacon/beacon.g.dart b/lib/models/beacon/beacon.g.dart index 6e89b39..391c116 100644 --- a/lib/models/beacon/beacon.g.dart +++ b/lib/models/beacon/beacon.g.dart @@ -27,13 +27,14 @@ class BeaconAdapter extends TypeAdapter { route: (fields[6] as List)?.cast(), landmarks: (fields[8] as List)?.cast(), location: fields[9] as Location, + group: fields[10] as String, ); } @override void write(BinaryWriter writer, Beacon obj) { writer - ..writeByte(10) + ..writeByte(11) ..writeByte(0) ..write(obj.id) ..writeByte(1) @@ -53,7 +54,9 @@ class BeaconAdapter extends TypeAdapter { ..writeByte(8) ..write(obj.landmarks) ..writeByte(9) - ..write(obj.location); + ..write(obj.location) + ..writeByte(10) + ..write(obj.group); } @override diff --git a/lib/models/group/group.dart b/lib/models/group/group.dart new file mode 100644 index 0000000..c6832ed --- /dev/null +++ b/lib/models/group/group.dart @@ -0,0 +1,59 @@ +import 'package:beacon/models/user/user_info.dart'; +import 'package:flutter/material.dart'; +import 'package:hive/hive.dart'; + +import '../beacon/beacon.dart'; + +part 'group.g.dart'; + +@HiveType(typeId: 5) +class Group extends HiveObject { + Group({ + this.id, + this.shortcode, + this.title, + this.leader, + this.members, + this.beacons, + }); + + factory Group.fromJson(Map json) { + return Group( + id: json['_id'] as String, + title: json['title'] != null ? json['title'] as String : null, + shortcode: json['shortcode'] as String, + leader: json['leader'] != null + ? User.fromJson(json['leader'] as Map) + : null, + members: json['members'] != null + ? (json['members'] as List) + .map((e) => User.fromJson(e as Map)) + .toList() + : [], + beacons: json['beacons'] != null + ? (json['beacons'] as List) + .map((e) => Beacon.fromJson(e as Map)) + .toList() + : [], + ); + } + + @HiveField(0) + String id; + @HiveField(1) + String title; + @HiveField(2) + String shortcode; + @HiveField(3) + User leader; + @HiveField(4) + List members = []; + @HiveField(5) + List beacons = []; + + print() { + debugPrint('shortCode: ${this.shortcode}'); + debugPrint('_id: ${this.id}'); + debugPrint('groupLeader: ${this.leader}'); + } +} diff --git a/lib/models/group/group.g.dart b/lib/models/group/group.g.dart new file mode 100644 index 0000000..6b08837 --- /dev/null +++ b/lib/models/group/group.g.dart @@ -0,0 +1,56 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'group.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class GroupAdapter extends TypeAdapter { + @override + final int typeId = 5; + + @override + Group read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return Group( + id: fields[0] as String, + shortcode: fields[2] as String, + title: fields[1] as String, + leader: fields[3] as User, + members: (fields[4] as List)?.cast(), + beacons: (fields[5] as List)?.cast(), + ); + } + + @override + void write(BinaryWriter writer, Group obj) { + writer + ..writeByte(6) + ..writeByte(0) + ..write(obj.id) + ..writeByte(1) + ..write(obj.title) + ..writeByte(2) + ..write(obj.shortcode) + ..writeByte(3) + ..write(obj.leader) + ..writeByte(4) + ..write(obj.members) + ..writeByte(5) + ..write(obj.beacons); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is GroupAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/models/user/user_info.dart b/lib/models/user/user_info.dart index d583fa1..57901cf 100644 --- a/lib/models/user/user_info.dart +++ b/lib/models/user/user_info.dart @@ -1,4 +1,5 @@ import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/group/group.dart'; import 'package:beacon/models/location/location.dart'; import 'package:flutter/material.dart'; import 'package:hive/hive.dart'; @@ -12,6 +13,7 @@ class User extends HiveObject { this.name, this.location, this.beacon, + this.groups, this.id, this.isGuest}); @@ -28,6 +30,11 @@ class User extends HiveObject { .map((e) => Beacon.fromJson(e as Map)) .toList() : [], + groups: json['groups'] != null + ? (json['groups'] as List) + .map((e) => Group.fromJson(e as Map)) + .toList() + : [], isGuest: json['isGuest'] != null ? json['isGuest'] as bool : false, ); } @@ -43,8 +50,10 @@ class User extends HiveObject { @HiveField(4) List beacon = []; @HiveField(5) - Location location; + List groups = []; @HiveField(6) + Location location; + @HiveField(7) bool isGuest = false; print() { @@ -54,6 +63,7 @@ class User extends HiveObject { debugPrint('email: ${this.email}'); debugPrint('location: ${this.location}'); debugPrint('beacons: ${this.beacon}'); + debugPrint('groups: ${this.groups}'); } // updateBeacon(List beaconList) { @@ -67,5 +77,6 @@ class User extends HiveObject { this.location = details.location; this.beacon = details.beacon; this.isGuest = details.isGuest; + this.groups = details.groups; } } diff --git a/lib/models/user/user_info.g.dart b/lib/models/user/user_info.g.dart index 2ea20c2..22bcbc7 100644 --- a/lib/models/user/user_info.g.dart +++ b/lib/models/user/user_info.g.dart @@ -20,17 +20,18 @@ class UserAdapter extends TypeAdapter { authToken: fields[1] as String, email: fields[3] as String, name: fields[2] as String, - location: fields[5] as Location, + location: fields[6] as Location, beacon: (fields[4] as List)?.cast(), + groups: (fields[5] as List)?.cast(), id: fields[0] as String, - isGuest: fields[6] as bool, + isGuest: fields[7] as bool, ); } @override void write(BinaryWriter writer, User obj) { writer - ..writeByte(7) + ..writeByte(8) ..writeByte(0) ..write(obj.id) ..writeByte(1) @@ -42,8 +43,10 @@ class UserAdapter extends TypeAdapter { ..writeByte(4) ..write(obj.beacon) ..writeByte(5) - ..write(obj.location) + ..write(obj.groups) ..writeByte(6) + ..write(obj.location) + ..writeByte(7) ..write(obj.isGuest); } diff --git a/lib/queries/auth.dart b/lib/queries/auth.dart index cb159d3..5fd3290 100644 --- a/lib/queries/auth.dart +++ b/lib/queries/auth.dart @@ -47,6 +47,22 @@ class AuthQueries { _id email name + groups{ + _id + title + shortcode + leader { + _id + name + } + members { + _id + name + } + beacons{ + _id + } + } beacons{ _id title diff --git a/lib/queries/beacon.dart b/lib/queries/beacon.dart index 5f5b08a..2b9622e 100644 --- a/lib/queries/beacon.dart +++ b/lib/queries/beacon.dart @@ -13,6 +13,10 @@ class BeaconQueries { _id name } + group{ + _id + title + } location{ lat lon @@ -36,8 +40,8 @@ class BeaconQueries { '''; } - String createBeacon( - String title, int startsAt, int expiresAt, String lat, String lon) { + String createBeacon(String title, int startsAt, int expiresAt, String lat, + String lon, String groupID) { return ''' mutation{ createBeacon(beacon: { @@ -47,7 +51,8 @@ class BeaconQueries { startLocation: { lat: "$lat", lon: "$lon" } - }) + }, + groupID:"$groupID") { _id title @@ -56,6 +61,10 @@ class BeaconQueries { _id name } + group { + _id + title + } location{ lat lon @@ -120,6 +129,10 @@ class BeaconQueries { _id title shortcode + group{ + _id + title + } leader { _id name @@ -148,6 +161,10 @@ class BeaconQueries { leader{ name } + group { + _id + title + } followers { _id name @@ -185,6 +202,10 @@ class BeaconQueries { _id title shortcode + group { + _id + title + } leader { name location { diff --git a/lib/queries/group.dart b/lib/queries/group.dart new file mode 100644 index 0000000..1246c91 --- /dev/null +++ b/lib/queries/group.dart @@ -0,0 +1,143 @@ +import 'package:graphql_flutter/graphql_flutter.dart'; + +class GroupQueries { + String createGroup(String title) { + return ''' + mutation{ + createGroup(group: { + title: "$title" + } + ) + { + _id + title + shortcode + leader { + _id + name + } + members { + _id + name + } + beacons + { + _id + title + shortcode + leader { + _id + name + } + location{ + lat + lon + } + followers { + _id + name + } + startsAt + expiresAt + } + } + } + '''; + } + + String joinGroup(String shortcode) { + return ''' + mutation{ + joinGroup( + shortcode: "$shortcode" + ) + { + _id + title + shortcode + leader { + _id + name + } + members { + _id + name + } + beacons + { + _id + title + shortcode + leader { + _id + name + } + location{ + lat + lon + } + followers { + _id + name + } + startsAt + expiresAt + } + } + } + '''; + } + + String groupDetail(String id) { + return ''' + query{ + group(id:"$id") + { + _id + title + shortcode + leader { + _id + name + } + members { + _id + name + } + beacons + { + _id + title + shortcode + leader { + _id + name + } + location{ + lat + lon + } + followers { + _id + name + } + startsAt + expiresAt + } + } + } + '''; + } + + final groupJoinedSubGql = gql(r''' + subscription StreamNewlyJoinedGroups($id: ID!){ + groupJoined(id: $id){ + name + location{ + lat + lon + } + } + } + '''); +} diff --git a/lib/router.dart b/lib/router.dart index 29f9736..7b568bb 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,8 +1,9 @@ import 'package:beacon/splash_screen.dart'; +import 'package:beacon/views/home_screen.dart'; import 'package:flutter/material.dart'; import 'package:beacon/utilities/constants.dart'; import 'package:beacon/views/auth_screen.dart'; -import 'package:beacon/views/home.dart'; +import 'package:beacon/views/group_screen.dart'; import 'package:beacon/views/hike_screen.dart'; Route generateRoute(RouteSettings settings) { @@ -20,6 +21,12 @@ Route generateRoute(RouteSettings settings) { arguments.beacon, isLeader: arguments.isLeader, )); + case Routes.groupScreen: + GroupScreen arguments = settings.arguments; + return MaterialPageRoute( + builder: (context) => GroupScreen( + arguments.group, + )); default: return MaterialPageRoute( builder: (context) => const SplashScreen(key: Key('SplashScreen'))); diff --git a/lib/services/database_mutation_functions.dart b/lib/services/database_mutation_functions.dart index cf113ae..8cfd7b5 100644 --- a/lib/services/database_mutation_functions.dart +++ b/lib/services/database_mutation_functions.dart @@ -1,5 +1,6 @@ import 'dart:async'; import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/group/group.dart'; import 'package:beacon/models/landmarks/landmark.dart'; import 'package:beacon/models/location/location.dart'; import 'package:beacon/queries/auth.dart'; @@ -11,17 +12,20 @@ import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:beacon/models/user/user_info.dart'; import '../locator.dart'; +import '../queries/group.dart'; class DataBaseMutationFunctions { GraphQLClient clientNonAuth; GraphQLClient clientAuth; AuthQueries _authQuery; BeaconQueries _beaconQuery; + GroupQueries _groupQuery; init() async { clientNonAuth = graphqlConfig.clientToQuery(); clientAuth = await graphqlConfig.authClient(); _authQuery = AuthQueries(); _beaconQuery = BeaconQueries(); + _groupQuery = GroupQueries(); } GraphQLError userNotFound = const GraphQLError(message: 'User not found'); @@ -90,6 +94,7 @@ class DataBaseMutationFunctions { return result.data; } + //Auth Future signup({String name, String email, String password}) async { final QueryResult result = email != null ? await clientNonAuth.mutate(MutationOptions( @@ -146,6 +151,7 @@ class DataBaseMutationFunctions { return otherError; } + // User Info Future fetchCurrentUserInfo() async { await databaseFunctions.init(); final QueryResult result = await clientAuth @@ -169,6 +175,7 @@ class DataBaseMutationFunctions { return false; } + // Beacon Info Future fetchBeaconInfo(String id) async { final QueryResult result = await clientAuth .query(QueryOptions(document: gql(_beaconQuery.fetchBeaconDetail(id)))); @@ -187,8 +194,9 @@ class DataBaseMutationFunctions { return null; } - Future> fetchUserBeacons() async { + Future> fetchUserBeacons(String groupid) async { List beacons = []; + List _userBeacons = []; Set beaconIds = {}; List expiredBeacons = []; if (!await connectionChecker.checkForInternetConnection()) { @@ -198,11 +206,13 @@ class DataBaseMutationFunctions { return beacons; } for (Beacon i in userBeacons) { - if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) - .isBefore(DateTime.now())) - expiredBeacons.add(i); - else - beacons.add(i); + if (i.group == groupid) { + if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) + .isBefore(DateTime.now())) + expiredBeacons.add(i); + else + beacons.add(i); + } } beacons.addAll(expiredBeacons); return beacons; @@ -210,7 +220,7 @@ class DataBaseMutationFunctions { //if connected to internet take from internet. final QueryResult result = await clientAuth - .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); + .query(QueryOptions(document: gql(_groupQuery.groupDetail(groupid)))); if (result.hasException) { final bool exception = encounteredExceptionOrError(result.exception, showSnackBar: false); @@ -218,10 +228,13 @@ class DataBaseMutationFunctions { print('$exception'); } } else if (result.data != null && result.isConcrete) { - final User userInfo = User.fromJson( - result.data['me'] as Map, - ); - for (var i in userInfo.beacon) { + // print(result.toString() + 'aadeeshmc'); + _userBeacons = (result.data['group']['beacons'] as List) + .map((e) => Beacon.fromJson(e as Map)) + .toList(); + + // userInfo.print(); + for (var i in _userBeacons) { if (!beaconIds.contains(i.id)) { if (!hiveDb.beaconsBox.containsKey(i.id)) { //This only happens if a someone else adds user to their beacon (which currently is not possible). @@ -245,7 +258,8 @@ class DataBaseMutationFunctions { return beacons; } - Future createBeacon(String title, int startsAt, int expiresAt) async { + Future createBeacon( + String title, int startsAt, int expiresAt, String groupID) async { LatLng loc; try { loc = await AppConstants.getLocation(); @@ -256,7 +270,7 @@ class DataBaseMutationFunctions { } final QueryResult result = await clientAuth.mutate(MutationOptions( document: gql(_beaconQuery.createBeacon(title, startsAt, expiresAt, - loc.latitude.toString(), loc.longitude.toString())))); + loc.latitude.toString(), loc.longitude.toString(), groupID)))); if (result.hasException) { navigationService.showSnackBar( "Something went wrong: ${result.exception.graphqlErrors.first.message}"); @@ -342,9 +356,10 @@ class DataBaseMutationFunctions { return null; } - Future> fetchNearbyBeacon() async { + Future> fetchNearbyBeacon(String groupID) async { await databaseFunctions.init(); List _nearbyBeacons = []; + List _nearbyBeaconsinGroup = []; LatLng loc; try { loc = await AppConstants.getLocation(); @@ -365,8 +380,10 @@ class DataBaseMutationFunctions { _nearbyBeacons = (result.data['nearbyBeacons'] as List) .map((e) => Beacon.fromJson(e as Map)) .toList(); - _nearbyBeacons.sort((a, b) => a.startsAt.compareTo(b.startsAt)); - return _nearbyBeacons; + for (Beacon i in _nearbyBeacons) + if (i.group == groupID) _nearbyBeaconsinGroup.add(i); + _nearbyBeaconsinGroup.sort((a, b) => a.startsAt.compareTo(b.startsAt)); + return _nearbyBeaconsinGroup; } return _nearbyBeacons; } @@ -389,4 +406,97 @@ class DataBaseMutationFunctions { }); return null; } + + // Group Info + Future createGroup(String title) async { + final QueryResult result = await clientAuth + .mutate(MutationOptions(document: gql(_groupQuery.createGroup(title)))); + if (result.hasException) { + navigationService.showSnackBar( + "Something went wrong: ${result.exception.graphqlErrors.first.message}"); + print("Something went wrong: ${result.exception}"); + } else if (result.data != null && result.isConcrete) { + final Group group = Group.fromJson( + result.data['createGroup'] as Map, + ); + // hiveDb.putBeaconInBeaconBox(group.id, group); + return group; + } + return null; + } + + Future joinGroup(String shortcode) async { + final QueryResult result = await clientAuth.mutate( + MutationOptions(document: gql(_groupQuery.joinGroup(shortcode)))); + if (result.hasException) { + navigationService.showSnackBar( + "Something went wrong: ${result.exception.graphqlErrors.first.message}"); + print("Something went wrong: ${result.exception}"); + navigationService.removeAllAndPush('/main', '/'); + } else if (result.data != null && result.isConcrete) { + final Group group = Group.fromJson( + result.data['joinBeacon'] as Map, + ); + // hiveDb.putBeaconInBeaconBox(beacon.id, beacon); + return group; + } else { + navigationService.showSnackBar( + "Something went wrong while trying to join Group", + ); + } + return null; + } + + Future> fetchUserGroups() async { + List groups = []; + Set groupIds = {}; + + // if (!await connectionChecker.checkForInternetConnection()) { + // final userBeacons = hiveDb.getAllUserBeacons(); + // if (userBeacons == null) { + // //snackbar has already been shown in getAllUserBeacons; + // return beacons; + // } + // for (Beacon i in userBeacons) { + // if (i.id == groupid) { + // if (DateTime.fromMillisecondsSinceEpoch(i.expiresAt) + // .isBefore(DateTime.now())) + // expiredBeacons.add(i); + // else + // beacons.add(i); + // } + // } + // beacons.addAll(expiredBeacons); + // return beacons; + // } + + //if connected to internet take from internet. + final QueryResult result = await clientAuth + .query(QueryOptions(document: gql(_authQuery.fetchUserInfo()))); + if (result.hasException) { + final bool exception = + encounteredExceptionOrError(result.exception, showSnackBar: false); + if (exception) { + print('$exception'); + } + } else if (result.data != null && result.isConcrete) { + final User userInfo = User.fromJson( + result.data['me'] as Map, + ); + // userInfo.print(); + for (var i in userInfo.groups) { + // print(i.beacons.length.toString() + "hello"); + if (!groupIds.contains(i.id)) { + // if (!hiveDb.beaconsBox.containsKey(i.id)) { + // //This only happens if a someone else adds user to their beacon (which currently is not possible). + // //beacons are put in box when creating or joining. + // await hiveDb.putBeaconInBeaconBox(i.id, i); + // } + groupIds.add(i.id); + groups.add(i); + } + } + } + return groups; + } } diff --git a/lib/services/hive_localdb.dart b/lib/services/hive_localdb.dart index 7f71d1d..319a5d5 100644 --- a/lib/services/hive_localdb.dart +++ b/lib/services/hive_localdb.dart @@ -6,9 +6,12 @@ import 'package:beacon/models/user/user_info.dart'; import 'package:hive/hive.dart'; import 'package:path_provider/path_provider.dart' as path_provider; +import '../models/group/group.dart'; + class HiveLocalDb { Box currentUserBox; Box beaconsBox; + Box groupsBox; Future init() async { final appDocumentDirectory = @@ -18,9 +21,11 @@ class HiveLocalDb { ..registerAdapter(UserAdapter()) ..registerAdapter(BeaconAdapter()) ..registerAdapter(LocationAdapter()) - ..registerAdapter(LandmarkAdapter()); + ..registerAdapter(LandmarkAdapter()) + ..registerAdapter(GroupAdapter()); currentUserBox = await Hive.openBox('currentUser'); beaconsBox = await Hive.openBox('beacons'); + groupsBox = await Hive.openBox('groups'); } Future saveUserInHive(User currentUser) async { diff --git a/lib/utilities/constants.dart b/lib/utilities/constants.dart index 3cfe951..8f272ea 100644 --- a/lib/utilities/constants.dart +++ b/lib/utilities/constants.dart @@ -63,6 +63,7 @@ class Routes { static const String authScreen = "/auth"; static const String mainScreen = "/main"; static const String hikeScreen = "/hikeScreen"; + static const String groupScreen = "/groupScreen"; } class Style { diff --git a/lib/view_model/home_view_model.dart b/lib/view_model/group_screen_view_model.dart similarity index 93% rename from lib/view_model/home_view_model.dart rename to lib/view_model/group_screen_view_model.dart index 5b6d658..bcbc616 100644 --- a/lib/view_model/home_view_model.dart +++ b/lib/view_model/group_screen_view_model.dart @@ -6,7 +6,7 @@ import 'package:beacon/views/hike_screen.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -class HomeViewModel extends BaseModel { +class GroupViewModel extends BaseModel { final formKeyCreate = GlobalKey(); final formKeyJoin = GlobalKey(); Duration resultingDuration = Duration(minutes: 30); @@ -17,6 +17,7 @@ class HomeViewModel extends BaseModel { bool isCreatingHike = false; String title; bool hasStarted; + String groupID; //commenting out since its value isnt used anywhere. //TextEditingController _titleController = new TextEditingController(); TextEditingController durationController = new TextEditingController(); @@ -24,7 +25,7 @@ class HomeViewModel extends BaseModel { TextEditingController startsAtTime = new TextEditingController(); String enteredPasskey; - createHikeRoom(Function reloadList) async { + createHikeRoom(String groupID, Function reloadList) async { FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); validate = AutovalidateMode.always; if (formKeyCreate.currentState.validate()) { @@ -33,10 +34,10 @@ class HomeViewModel extends BaseModel { validate = AutovalidateMode.disabled; databaseFunctions.init(); final Beacon beacon = await databaseFunctions.createBeacon( - title, - startsAt.millisecondsSinceEpoch.toInt(), - startsAt.add(resultingDuration).millisecondsSinceEpoch.toInt(), - ); + title, + startsAt.millisecondsSinceEpoch.toInt(), + startsAt.add(resultingDuration).millisecondsSinceEpoch.toInt(), + groupID); // setState(ViewState.idle); if (beacon != null) { hasStarted = DateTime.now() diff --git a/lib/view_model/home_screen_view_model.dart b/lib/view_model/home_screen_view_model.dart new file mode 100644 index 0000000..e5e4fb8 --- /dev/null +++ b/lib/view_model/home_screen_view_model.dart @@ -0,0 +1,72 @@ +import 'package:beacon/enums/view_state.dart'; +import 'package:beacon/locator.dart'; +import 'package:beacon/view_model/base_view_model.dart'; +import 'package:flutter/material.dart'; + +import '../models/group/group.dart'; +import '../views/group_screen.dart'; + +class HomeViewModel extends BaseModel { + final formKeyCreate = GlobalKey(); + final formKeyJoin = GlobalKey(); + AutovalidateMode validate = AutovalidateMode.onUserInteraction; + String title; + bool isCreatingGroup = false; + String enteredGroupCode; + + createGroupRoom() async { + FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); + validate = AutovalidateMode.always; + if (formKeyCreate.currentState.validate()) { + navigationService.pop(); + setState(ViewState.busy); + validate = AutovalidateMode.disabled; + databaseFunctions.init(); + final Group group = await databaseFunctions.createGroup( + title, + ); + if (group != null) { + navigationService.pushScreen('/groupScreen', + arguments: GroupScreen( + group, + )); + } + } else { + navigationService.showSnackBar('Something went wrong'); + setState(ViewState.idle); + } + } + + joinGroupRoom() async { + FocusScope.of(navigationService.navigatorKey.currentContext).unfocus(); + validate = AutovalidateMode.always; + if (formKeyJoin.currentState.validate()) { + setState(ViewState.busy); + validate = AutovalidateMode.disabled; + databaseFunctions.init(); + final Group group = await databaseFunctions.joinGroup(enteredGroupCode); + // setState(ViewState.idle); + if (group != null) { + navigationService.pushScreen('/groupScreen', + arguments: GroupScreen( + group, + )); + } else { + //there was some error, go back to homescreen. + setState(ViewState.idle); + } + //Snackbar is displayed by joinBeacon itself on any error or trying to join expired beacon. + } else { + navigationService.showSnackBar('Enter Valid Group Code'); + } + } + + logout() async { + setState(ViewState.busy); + await userConfig.currentUser.delete(); + await hiveDb.beaconsBox.clear(); + // setState(ViewState.idle); + await localNotif.deleteNotification(); + navigationService.removeAllAndPush('/auth', '/'); + } +} diff --git a/lib/views/group_screen.dart b/lib/views/group_screen.dart new file mode 100644 index 0000000..68be567 --- /dev/null +++ b/lib/views/group_screen.dart @@ -0,0 +1,409 @@ +import 'package:beacon/components/beacon_card.dart'; +import 'package:beacon/components/create_join_dialog.dart'; +import 'package:beacon/components/hike_button.dart'; +import 'package:beacon/components/loading_screen.dart'; +import 'package:beacon/components/shape_painter.dart'; +import 'package:beacon/locator.dart'; +import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/utilities/constants.dart'; +import 'package:beacon/view_model/group_screen_view_model.dart'; +import 'package:beacon/views/base_view.dart'; +import 'package:flutter/material.dart'; +import 'package:modal_progress_hud/modal_progress_hud.dart'; +import 'package:sizer/sizer.dart'; + +import '../models/group/group.dart'; + +class GroupScreen extends StatefulWidget { + final Group group; + GroupScreen(this.group); + + @override + _GroupScreenState createState() => _GroupScreenState(); +} + +class _GroupScreenState extends State + with TickerProviderStateMixin { + var fetchingUserBeacons; + var fetchingNearbyBeacons; + + @override + void initState() { + fetchingUserBeacons = databaseFunctions.fetchUserBeacons(widget.group.id); + fetchingNearbyBeacons = + databaseFunctions.fetchNearbyBeacon(widget.group.id); + super.initState(); + } + + void reloadList() { + setState(() { + fetchingUserBeacons = databaseFunctions.fetchUserBeacons(widget.group.id); + fetchingNearbyBeacons = + databaseFunctions.fetchNearbyBeacon(widget.group.id); + }); + } + + @override + Widget build(BuildContext context) { + return BaseView(builder: (context, model, child) { + TabController tabController = new TabController(length: 2, vsync: this); + return model.isBusy + ? LoadingScreen() + : Scaffold( + resizeToAvoidBottomInset: false, + body: SafeArea( + child: ModalProgressHUD( + inAsyncCall: model.isCreatingHike, + child: Stack( + children: [ + CustomPaint( + size: Size(MediaQuery.of(context).size.width, + MediaQuery.of(context).size.height - 200), + painter: ShapePainter(), + ), + // Creating a back button + // Align( + // alignment: Alignment(-0.9, -0.8), + // child: FloatingActionButton( + // onPressed: () => navigationService.pop(), + // backgroundColor: kYellow, + // child: Icon(Icons.arrow_back_rounded), + // ), + // ), + Align( + alignment: Alignment(-0.7, -0.95), + child: Container( + width: MediaQuery.of(context).size.width * 0.6, + child: Text( + 'Welcome to Group ' + widget.group.title, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 25, + color: Colors.white, + ), + ), + ), + ), + Align( + alignment: Alignment(0.9, -0.8), + child: FloatingActionButton( + onPressed: () => showDialog( + context: context, + builder: (context) => AlertDialog( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + actionsAlignment: + MainAxisAlignment.spaceEvenly, + title: Text( + (userConfig.currentUser.isGuest) + ? 'Create Account' + : 'Logout', + style: TextStyle( + fontSize: 25, color: kYellow), + ), + content: Text( + (userConfig.currentUser.isGuest) + ? 'Would you like to create an account?' + : 'Are you sure you wanna logout?', + style: TextStyle( + fontSize: 16, color: kBlack), + ), + actions: [ + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () => + Navigator.of(context).pop(false), + text: 'No', + textSize: 18.0, + ), + HikeButton( + buttonHeight: 2.5.h, + buttonWidth: 8.w, + onTap: () { + navigationService.pop(); + model.logout(); + }, + text: 'Yes', + textSize: 18.0, + ), + ], + )), + backgroundColor: kYellow, + child: (userConfig.currentUser.isGuest) + ? Icon(Icons.person) + : Icon(Icons.logout), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(4.w, 25.h, 4.w, 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 45.w, + child: HikeButton( + buttonWidth: homebwidth, + buttonHeight: homebheight - 2, + text: 'Create Hike', + textColor: Colors.white, + borderColor: Colors.white, + buttonColor: kYellow, + onTap: () { + if (userConfig.currentUser.isGuest) { + navigationService.showSnackBar( + 'You need to login with credentials to start a hike'); + } else { + CreateJoinBeaconDialog.createHikeDialog( + context, + model, + reloadList, + widget.group.id); + } + }, + ), + ), + SizedBox( + width: 1.w, + ), + Container( + width: 45.w, + child: HikeButton( + buttonWidth: homebwidth, + buttonHeight: homebheight - 2, + text: 'Join a Hike', + textColor: kYellow, + borderColor: kYellow, + buttonColor: Colors.white, + onTap: () async { + CreateJoinBeaconDialog.joinBeaconDialog( + context, model, reloadList); + }, + ), + ), + ], + ), + ), + Column( + mainAxisAlignment: MainAxisAlignment.end, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + height: MediaQuery.of(context).size.height * 0.565, + margin: EdgeInsets.only(top: 20), + decoration: BoxDecoration( + color: kLightBlue, + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(50.0), + topRight: const Radius.circular(50.0), + ), + ), + child: Column( + children: [ + TabBar( + indicatorSize: TabBarIndicatorSize.tab, + indicatorColor: kBlue, + labelColor: kBlack, + tabs: [ + Tab(text: 'Your Beacons'), + Tab(text: 'Nearby Beacons'), + ], + controller: tabController, + ), + Expanded( + child: TabBarView( + controller: tabController, + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: FutureBuilder( + future: fetchingUserBeacons, + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error.toString(), + textAlign: TextAlign.center, + textScaleFactor: 1.3, + ), + ); + } + final List posts = + snapshot.data; + return Container( + alignment: Alignment.center, + child: posts.length == 0 + ? SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Column( + children: [ + Text( + 'You haven\'t joined or created any beacon yet', + textAlign: + TextAlign + .center, + style: TextStyle( + color: + kBlack, + fontSize: + 20), + ), + SizedBox( + height: 2.h, + ), + RichText( + text: TextSpan( + // textAlign: + // TextAlign + // .center, + style: TextStyle( + color: + kBlack, + fontSize: + 20), + children: [ + TextSpan( + text: + 'Join', + style: TextStyle( + fontWeight: + FontWeight.bold)), + TextSpan( + text: + ' a Hike or '), + TextSpan( + text: + 'Create', + style: TextStyle( + fontWeight: + FontWeight.bold)), + TextSpan( + text: + ' a new one! '), + ], + ), + ), + ], + ), + ) + : ListView.builder( + physics: + AlwaysScrollableScrollPhysics(), + scrollDirection: + Axis.vertical, + itemCount: + posts?.length, + padding: + EdgeInsets.all(8), + itemBuilder: + (context, index) { + return BeaconCustomWidgets + .getBeaconCard( + context, + posts[ + index]); + }, + )); + } else { + return Center( + child: BeaconCustomWidgets + .getPlaceholder(), + ); + } + }, + ), + ), + Padding( + padding: const EdgeInsets.all(12.0), + child: Container( + alignment: Alignment.center, + child: FutureBuilder( + future: fetchingNearbyBeacons, + builder: (context, snapshot) { + if (snapshot.connectionState == + ConnectionState.waiting) + return Center( + child: BeaconCustomWidgets + .getPlaceholder(), + ); + if (snapshot.connectionState == + ConnectionState.done) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error.toString(), + textAlign: + TextAlign.center, + textScaleFactor: 1.3, + ), + ); + } + + final posts = snapshot.data; + if (posts == null || + posts.length == 0) { + return SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Center( + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 20), + ), + ), + ); + } + return ListView.builder( + physics: + AlwaysScrollableScrollPhysics(), + scrollDirection: + Axis.vertical, + itemCount: posts.length, + padding: EdgeInsets.all(8), + itemBuilder: + (context, index) { + return BeaconCustomWidgets + .getBeaconCard(context, + posts[index]); + }, + ); + } else { + return SingleChildScrollView( + physics: + AlwaysScrollableScrollPhysics(), + child: Center( + child: Text( + 'No nearby beacons found :(', + style: TextStyle( + color: kBlack, + fontSize: 18))), + ); + } + }, + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + ); + }); + } +} diff --git a/lib/views/hike_screen.dart b/lib/views/hike_screen.dart index 1631d07..67a20df 100644 --- a/lib/views/hike_screen.dart +++ b/lib/views/hike_screen.dart @@ -1,4 +1,5 @@ import 'package:beacon/components/loading_screen.dart'; +import 'package:beacon/locator.dart'; import 'package:beacon/view_model/hike_screen_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; @@ -185,7 +186,8 @@ class _HikeScreenState extends State { alignment: Alignment(-0.9, -0.98), child: FloatingActionButton( onPressed: () { - model.onWillPop(context); + //TODO: back to group screen + navigationService.pop(); }, backgroundColor: kYellow, child: Icon( diff --git a/lib/views/home.dart b/lib/views/home_screen.dart similarity index 73% rename from lib/views/home.dart rename to lib/views/home_screen.dart index aeca1d8..c855ff4 100644 --- a/lib/views/home.dart +++ b/lib/views/home_screen.dart @@ -4,25 +4,25 @@ import 'package:beacon/components/hike_button.dart'; import 'package:beacon/components/loading_screen.dart'; import 'package:beacon/components/shape_painter.dart'; import 'package:beacon/locator.dart'; -import 'package:beacon/models/beacon/beacon.dart'; +import 'package:beacon/models/group/group.dart'; import 'package:beacon/utilities/constants.dart'; -import 'package:beacon/view_model/home_view_model.dart'; import 'package:beacon/views/base_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:modal_progress_hud/modal_progress_hud.dart'; import 'package:sizer/sizer.dart'; +import '../components/group_card.dart'; +import '../view_model/home_screen_view_model.dart'; + class MainScreen extends StatefulWidget { const MainScreen({Key key}) : super(key: key); - @override _MainScreenState createState() => _MainScreenState(); } class _MainScreenState extends State with TickerProviderStateMixin { - var fetchingUserBeacons; - var fetchingNearbyBeacons; + var fetchingUserGroups; Future _onPopHome() async { return showDialog( context: context, @@ -61,15 +61,13 @@ class _MainScreenState extends State with TickerProviderStateMixin { @override void initState() { - fetchingUserBeacons = databaseFunctions.fetchUserBeacons(); - fetchingNearbyBeacons = databaseFunctions.fetchNearbyBeacon(); + fetchingUserGroups = databaseFunctions.fetchUserGroups(); super.initState(); } void reloadList() { setState(() { - fetchingUserBeacons = databaseFunctions.fetchUserBeacons(); - fetchingNearbyBeacons = databaseFunctions.fetchNearbyBeacon(); + fetchingUserGroups = databaseFunctions.fetchUserGroups(); }); } @@ -78,14 +76,14 @@ class _MainScreenState extends State with TickerProviderStateMixin { return WillPopScope( onWillPop: _onPopHome, child: BaseView(builder: (context, model, child) { - TabController tabController = new TabController(length: 2, vsync: this); + TabController tabController = new TabController(length: 1, vsync: this); return model.isBusy ? LoadingScreen() : Scaffold( resizeToAvoidBottomInset: false, body: SafeArea( child: ModalProgressHUD( - inAsyncCall: model.isCreatingHike, + inAsyncCall: model.isCreatingGroup, child: Stack( children: [ CustomPaint( @@ -156,19 +154,19 @@ class _MainScreenState extends State with TickerProviderStateMixin { Container( width: 45.w, child: HikeButton( - buttonWidth: homebwidth, + buttonWidth: homebwidth - 10, buttonHeight: homebheight - 2, - text: 'Create Hike', + text: 'Create Group', textColor: Colors.white, borderColor: Colors.white, buttonColor: kYellow, onTap: () { if (userConfig.currentUser.isGuest) { navigationService.showSnackBar( - 'You need to login with credentials to start a hike'); + 'You need to login with credentials to be able to create a group'); } else { - CreateJoinBeaconDialog.createHikeDialog( - context, model, reloadList); + CreateJoinGroupDialog.createGroupDialog( + context, model); } }, ), @@ -181,13 +179,13 @@ class _MainScreenState extends State with TickerProviderStateMixin { child: HikeButton( buttonWidth: homebwidth, buttonHeight: homebheight - 2, - text: 'Join a Hike', + text: 'Join a Group', textColor: kYellow, borderColor: kYellow, buttonColor: Colors.white, onTap: () async { - CreateJoinBeaconDialog.joinBeaconDialog( - context, model, reloadList); + CreateJoinGroupDialog.joinGroupDialog( + context, model); }, ), ), @@ -214,8 +212,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { indicatorColor: kBlue, labelColor: kBlack, tabs: [ - Tab(text: 'Your Beacons'), - Tab(text: 'Nearby Beacons'), + Tab(text: 'Your Groups'), ], controller: tabController, ), @@ -226,7 +223,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { Padding( padding: const EdgeInsets.all(12.0), child: FutureBuilder( - future: fetchingUserBeacons, + future: fetchingUserGroups, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { @@ -240,7 +237,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { ), ); } - final List posts = + final List posts = snapshot.data; return Container( alignment: Alignment.center, @@ -251,7 +248,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { child: Column( children: [ Text( - 'You haven\'t joined or created any beacon yet', + 'You haven\'t joined or created any group yet', textAlign: TextAlign .center, @@ -283,7 +280,7 @@ class _MainScreenState extends State with TickerProviderStateMixin { TextStyle(fontWeight: FontWeight.bold)), TextSpan( text: - ' a Hike or '), + ' a Group or '), TextSpan( text: 'Create', @@ -311,8 +308,8 @@ class _MainScreenState extends State with TickerProviderStateMixin { itemBuilder: (context, index) { - return BeaconCustomWidgets - .getBeaconCard( + return GroupCustomWidgets + .getGroupCard( context, posts[ index]); @@ -327,80 +324,6 @@ class _MainScreenState extends State with TickerProviderStateMixin { }, ), ), - Padding( - padding: const EdgeInsets.all(12.0), - child: Container( - alignment: Alignment.center, - child: FutureBuilder( - future: fetchingNearbyBeacons, - builder: (context, snapshot) { - if (snapshot.connectionState == - ConnectionState.waiting) - return Center( - child: BeaconCustomWidgets - .getPlaceholder(), - ); - if (snapshot.connectionState == - ConnectionState.done) { - if (snapshot.hasError) { - return Center( - child: Text( - snapshot.error - .toString(), - textAlign: - TextAlign.center, - textScaleFactor: 1.3, - ), - ); - } - - final posts = snapshot.data; - if (posts == null || - posts.length == 0) { - return SingleChildScrollView( - physics: - AlwaysScrollableScrollPhysics(), - child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 20), - ), - ), - ); - } - return ListView.builder( - physics: - AlwaysScrollableScrollPhysics(), - scrollDirection: - Axis.vertical, - itemCount: posts.length, - padding: EdgeInsets.all(8), - itemBuilder: - (context, index) { - return BeaconCustomWidgets - .getBeaconCard( - context, - posts[index]); - }, - ); - } else { - return SingleChildScrollView( - physics: - AlwaysScrollableScrollPhysics(), - child: Center( - child: Text( - 'No nearby beacons found :(', - style: TextStyle( - color: kBlack, - fontSize: 18))), - ); - } - }, - ), - ), - ), ], ), ), diff --git a/pubspec.yaml b/pubspec.yaml index 9c38407..4339d91 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,7 +37,7 @@ dependencies: modal_progress_hud: ^0.1.3 overlay_support: ^2.0.1 path_provider: ^2.0.9 - provider: ^6.0.2 + provider: ^6.0.3 rxdart: ^0.27.3 share_plus: ^4.0.8 shared_preferences: ^2.0.13 @@ -46,7 +46,6 @@ dependencies: sliding_up_panel: ^2.0.0+1 uni_links: ^0.5.1 - dev_dependencies: build_runner: ^2.1.7 flutter_launcher_icons: ^0.9.2 From 81be07b81a0b3ad02ee2b7c67bb02a988adac745 Mon Sep 17 00:00:00 2001 From: Aditya Kumar Singh Date: Sun, 6 Nov 2022 22:36:05 +0530 Subject: [PATCH 067/122] plugin downgraded + flutter upgraded (#172) --- pubspec.lock | 35 ++++++++++++++--------------------- pubspec.yaml | 2 +- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index b5fc2c8..7ea1152 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.2" + version: "2.9.0" boolean_selector: dependency: transitive description: @@ -105,14 +105,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.1" checked_yaml: dependency: transitive description: @@ -126,7 +119,7 @@ packages: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" code_builder: dependency: transitive description: @@ -252,7 +245,7 @@ packages: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.3.0" + version: "1.3.1" ffi: dependency: transitive description: @@ -647,21 +640,21 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.11" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities url: "https://pub.dartlang.org" source: hosted - version: "0.1.4" + version: "0.1.5" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.7.0" + version: "1.8.0" mime: dependency: transitive description: @@ -724,7 +717,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.2" path_provider: dependency: "direct main" description: @@ -1023,7 +1016,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.2" + version: "1.9.0" stack_trace: dependency: transitive description: @@ -1051,35 +1044,35 @@ packages: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" test: dependency: "direct dev" description: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.21.1" + version: "1.21.4" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.9" + version: "0.4.12" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.4.13" + version: "0.4.16" timezone: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 4339d91..ed1f23f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -29,7 +29,7 @@ dependencies: ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 geolocator: ^8.0.0 get_it: ^7.2.0 - google_maps_flutter: ^2.1.2 + google_maps_flutter: ^2.0.5 graphql_flutter: ^5.1.0 hive: ^2.0.4 intl: ^0.17.0 From f33ef474be1487dae36ade27636f2a8fa67064a4 Mon Sep 17 00:00:00 2001 From: Ravi Dev Pandey <62198564+literalEval@users.noreply.github.com> Date: Thu, 2 Feb 2023 19:59:47 +0530 Subject: [PATCH 068/122] Add "coverage" folder in gitignore (#177) * update gitignore * fix file trail --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index dadf4ef..8bea02a 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,6 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release + +# Testing +/coverage/ From ba7738e277451776fb9be4eab1d36c3596dc64a8 Mon Sep 17 00:00:00 2001 From: Ravi Dev Pandey <62198564+literalEval@users.noreply.github.com> Date: Tue, 14 Feb 2023 19:58:44 +0530 Subject: [PATCH 069/122] Add Mockito and update packages (#179) * update gitignore * fix file trail * Upgrade packages and add Mockito for testing * update flutter version in workflow * fix deprecations * change architecture type * update subosito version * update subosito version --- .github/workflows/flutter-ci.yml | 10 +- lib/components/hike_button.dart | 2 +- lib/components/hike_screen_widget.dart | 2 +- lib/services/local_notification.dart | 18 +- pubspec.lock | 350 ++++++++++--------------- pubspec.yaml | 11 +- 6 files changed, 164 insertions(+), 229 deletions(-) diff --git a/.github/workflows/flutter-ci.yml b/.github/workflows/flutter-ci.yml index 0815a67..13396df 100644 --- a/.github/workflows/flutter-ci.yml +++ b/.github/workflows/flutter-ci.yml @@ -17,10 +17,11 @@ jobs: - uses: actions/setup-java@v1 with: java-version: "12.x" - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: # Temporary fix to failing CI - flutter-version: '3.0.1' + flutter-version: '3.3.9' + architecture: x64 # channel: "stable" - run: flutter pub get - run: flutter format --set-exit-if-changed . @@ -37,10 +38,11 @@ jobs: - uses: actions/setup-java@v1 with: java-version: "12.x" - - uses: subosito/flutter-action@v1 + - uses: subosito/flutter-action@v2 with: # Temporary fix to failing CI - flutter-version: '3.0.1' + flutter-version: '3.3.9' + architecture: x64 # channel: "stable" - run: flutter pub get - run: flutter format --set-exit-if-changed . diff --git a/lib/components/hike_button.dart b/lib/components/hike_button.dart index 6344178..2313635 100644 --- a/lib/components/hike_button.dart +++ b/lib/components/hike_button.dart @@ -24,7 +24,7 @@ class HikeButton extends StatelessWidget { Widget build(BuildContext context) { return ElevatedButton( style: ElevatedButton.styleFrom( - primary: buttonColor, + backgroundColor: buttonColor, shape: RoundedRectangleBorder( borderRadius: new BorderRadius.circular(50.0), side: BorderSide(color: borderColor)), diff --git a/lib/components/hike_screen_widget.dart b/lib/components/hike_screen_widget.dart index 4acb6c3..d3ab512 100644 --- a/lib/components/hike_screen_widget.dart +++ b/lib/components/hike_screen_widget.dart @@ -147,7 +147,7 @@ class HikeScreenWidget extends ChangeNotifier { "${beacon.title} Beacon started at: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()} from: ${initialAddress.first.addressLine}.\n\nIt will end on: ${DateFormat("hh:mm a, d/M/y").format(DateTime.fromMillisecondsSinceEpoch(beacon.startsAt)).toString()}.\n\nBeacon's current location is: ${currentAddress.first.addressLine}.\n\nBeacon's current leader is: ${beacon.leader.name}.\n\nTo join this beacon, enter this code in the app: ${beacon.shortcode}.\nYou can also join the beacon by clicking the following link: https://beacon.aadibajpai.com/?shortcode=${beacon.shortcode}"; //Will be used as subject if shared via email, else isnt used. String subjectToShare = "${beacon.title} beacons's route"; - await Share.shareFiles([imageFile.path], + await Share.shareXFiles([XFile(imageFile.path)], text: textToShare, subject: subjectToShare); //hide after sharing. await mapController.hideMarkerInfoWindow(MarkerId("1")); diff --git a/lib/services/local_notification.dart b/lib/services/local_notification.dart index d3503ee..623ad5a 100644 --- a/lib/services/local_notification.dart +++ b/lib/services/local_notification.dart @@ -13,8 +13,8 @@ class LocalNotification { Future initialize() async { const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('app_icon'); - final IOSInitializationSettings initializationSettingsIOS = - IOSInitializationSettings( + final DarwinInitializationSettings initializationSettingsIOS = + DarwinInitializationSettings( onDidReceiveLocalNotification: (_, __, ___, ____) {}); final InitializationSettings initializationSettings = InitializationSettings( @@ -25,13 +25,15 @@ class LocalNotification { await flutterLocalNotificationsPlugin.initialize( initializationSettings, - onSelectNotification: (payload) => onSelectNotification(payload), + onDidReceiveNotificationResponse: (notificationResponse) => + onSelectNotification(notificationResponse), ); } - Future onSelectNotification(String payload) async { - if (payload != null) { - Beacon beacon = await databaseFunctions.fetchBeaconInfo(payload); + Future onSelectNotification(notificationResponse) async { + if (notificationResponse != null) { + Beacon beacon = + await databaseFunctions.fetchBeaconInfo(notificationResponse.payload); bool isLeader = beacon.leader.id == userConfig.currentUser.id; navigationService.pushScreen('/hikeScreen', arguments: HikeScreen(beacon, isLeader: isLeader)); @@ -58,7 +60,7 @@ class LocalNotification { priority: Priority.high, importance: Importance.high, ), - iOS: IOSNotificationDetails( + iOS: DarwinNotificationDetails( presentAlert: true, presentBadge: true, presentSound: true, @@ -85,7 +87,7 @@ class LocalNotification { priority: Priority.high, importance: Importance.high, ), - iOS: IOSNotificationDetails( + iOS: DarwinNotificationDetails( presentAlert: true, presentBadge: true, presentSound: true, diff --git a/pubspec.lock b/pubspec.lock index 7ea1152..95dc7a9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,28 +7,28 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "40.0.0" + version: "47.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "4.1.0" + version: "4.7.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.3.0" + version: "3.3.6" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.3.1" + version: "2.3.2" async: dependency: transitive description: @@ -49,14 +49,14 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.3.0" + version: "2.3.1" build_config: dependency: transitive description: name: build_config url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.1" build_daemon: dependency: transitive description: @@ -70,21 +70,21 @@ packages: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.9" + version: "2.0.10" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.1.11" + version: "2.3.0" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "7.2.3" + version: "7.2.7" built_collection: dependency: transitive description: @@ -98,7 +98,7 @@ packages: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.3.3" + version: "8.4.3" characters: dependency: transitive description: @@ -112,7 +112,14 @@ packages: name: checked_yaml url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.5" clock: dependency: transitive description: @@ -126,7 +133,7 @@ packages: name: code_builder url: "https://pub.dartlang.org" source: hosted - version: "4.1.0" + version: "4.4.0" collection: dependency: transitive description: @@ -140,56 +147,35 @@ packages: name: connectivity_plus url: "https://pub.dartlang.org" source: hosted - version: "2.3.5" - connectivity_plus_linux: - dependency: transitive - description: - name: connectivity_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - connectivity_plus_macos: - dependency: transitive - description: - name: connectivity_plus_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.4" + version: "3.0.2" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" - connectivity_plus_web: - dependency: transitive - description: - name: connectivity_plus_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.2" - connectivity_plus_windows: - dependency: transitive - description: - name: connectivity_plus_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.2" + version: "1.2.3" convert: dependency: transitive description: name: convert url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.1" coverage: dependency: transitive description: name: coverage url: "https://pub.dartlang.org" source: hosted - version: "1.3.2" + version: "1.6.2" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+4" crypto: dependency: transitive description: @@ -210,7 +196,7 @@ packages: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.2.3" + version: "2.2.4" data_connection_checker: dependency: "direct main" description: @@ -231,14 +217,14 @@ packages: name: dbus url: "https://pub.dartlang.org" source: hosted - version: "0.7.5" + version: "0.7.8" duration_picker: dependency: "direct main" description: name: duration_picker url: "https://pub.dartlang.org" source: hosted - version: "1.1.0+1" + version: "1.1.1" fake_async: dependency: transitive description: @@ -259,7 +245,7 @@ packages: name: file url: "https://pub.dartlang.org" source: hosted - version: "6.1.2" + version: "6.1.4" fixnum: dependency: transitive description: @@ -306,42 +292,35 @@ packages: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.9.3" - flutter_lints: - dependency: transitive - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.4" + version: "0.11.0" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "9.6.1" + version: "13.0.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux url: "https://pub.dartlang.org" source: hosted - version: "0.5.0+1" + version: "3.0.0" flutter_local_notifications_platform_interface: dependency: transitive description: name: flutter_local_notifications_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.0.7" flutter_polyline_points: dependency: "direct main" description: @@ -372,7 +351,7 @@ packages: name: fluttertoast url: "https://pub.dartlang.org" source: hosted - version: "8.0.9" + version: "8.1.2" frontend_server_client: dependency: transitive description: @@ -395,35 +374,35 @@ packages: name: geolocator url: "https://pub.dartlang.org" source: hosted - version: "8.2.1" + version: "9.0.2" geolocator_android: dependency: transitive description: name: geolocator_android url: "https://pub.dartlang.org" source: hosted - version: "3.2.1" + version: "4.1.7" geolocator_apple: dependency: transitive description: name: geolocator_apple url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.2.5" geolocator_platform_interface: dependency: transitive description: name: geolocator_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "4.0.5" + version: "4.0.7" geolocator_web: dependency: transitive description: name: geolocator_web url: "https://pub.dartlang.org" source: hosted - version: "2.1.5" + version: "2.1.6" geolocator_windows: dependency: transitive description: @@ -444,98 +423,112 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" google_maps_flutter: dependency: "direct main" description: name: google_maps_flutter url: "https://pub.dartlang.org" source: hosted - version: "2.1.8" + version: "2.2.3" + google_maps_flutter_android: + dependency: transitive + description: + name: google_maps_flutter_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.3" + google_maps_flutter_ios: + dependency: transitive + description: + name: google_maps_flutter_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.13" google_maps_flutter_platform_interface: dependency: transitive description: name: google_maps_flutter_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.2.5" gql: dependency: transitive description: name: gql url: "https://pub.dartlang.org" source: hosted - version: "0.13.1" + version: "0.14.0" gql_dedupe_link: dependency: transitive description: name: gql_dedupe_link url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.3+1" gql_error_link: dependency: transitive description: name: gql_error_link url: "https://pub.dartlang.org" source: hosted - version: "0.2.2" + version: "0.2.3+1" gql_exec: dependency: transitive description: name: gql_exec url: "https://pub.dartlang.org" source: hosted - version: "0.4.0" + version: "0.4.3" gql_http_link: dependency: transitive description: name: gql_http_link url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.5" gql_link: dependency: transitive description: name: gql_link url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.5.1" gql_transform_link: dependency: transitive description: name: gql_transform_link url: "https://pub.dartlang.org" source: hosted - version: "0.2.2" + version: "0.2.2+1" graphql: dependency: transitive description: name: graphql url: "https://pub.dartlang.org" source: hosted - version: "5.1.1" + version: "5.1.2" graphql_flutter: dependency: "direct main" description: name: graphql_flutter url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "5.1.1" graphs: dependency: transitive description: name: graphs url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.2.0" hive: dependency: "direct main" description: name: hive url: "https://pub.dartlang.org" source: hosted - version: "2.2.2" + version: "2.2.3" hive_generator: dependency: "direct dev" description: @@ -549,7 +542,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.4" + version: "0.13.5" http_multi_server: dependency: transitive description: @@ -563,14 +556,14 @@ packages: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "4.0.1" + version: "4.0.2" image: dependency: transitive description: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.2.0" + version: "3.3.0" intl: dependency: "direct main" description: @@ -584,7 +577,7 @@ packages: name: io url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: @@ -598,14 +591,7 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "4.5.0" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" + version: "4.8.0" location: dependency: "direct main" description: @@ -633,7 +619,7 @@ packages: name: logging url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.1.1" matcher: dependency: transitive description: @@ -661,7 +647,14 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.4" + mockito: + dependency: "direct main" + description: + name: mockito + url: "https://pub.dartlang.org" + source: hosted + version: "5.3.2" modal_progress_hud: dependency: "direct main" description: @@ -696,14 +689,14 @@ packages: name: normalize url: "https://pub.dartlang.org" source: hosted - version: "0.6.0+1" + version: "0.7.2" overlay_support: dependency: "direct main" description: name: overlay_support url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.0" package_config: dependency: transitive description: @@ -724,21 +717,21 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.11" + version: "2.0.12" path_provider_android: dependency: transitive description: name: path_provider_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.15" - path_provider_ios: + version: "2.0.22" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios + name: path_provider_foundation url: "https://pub.dartlang.org" source: hosted - version: "2.0.10" + version: "2.1.1" path_provider_linux: dependency: transitive description: @@ -746,34 +739,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.3" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "5.0.0" + version: "5.1.0" platform: dependency: transitive description: @@ -787,7 +773,14 @@ packages: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.2" + version: "2.1.3" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "3.6.2" pool: dependency: transitive description: @@ -808,112 +801,77 @@ packages: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.3" + version: "6.0.5" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.3" pubspec_parse: dependency: transitive description: name: pubspec_parse url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.2.1" rxdart: dependency: "direct main" description: name: rxdart url: "https://pub.dartlang.org" source: hosted - version: "0.27.4" + version: "0.27.7" share_plus: dependency: "direct main" description: name: share_plus url: "https://pub.dartlang.org" source: hosted - version: "4.0.9" - share_plus_linux: - dependency: transitive - description: - name: share_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" - share_plus_macos: - dependency: transitive - description: - name: share_plus_macos - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" + version: "6.3.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "3.0.3" - share_plus_web: - dependency: transitive - description: - name: share_plus_web - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - share_plus_windows: - dependency: transitive - description: - name: share_plus_windows - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" + version: "3.2.0" shared_preferences: dependency: "direct main" description: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "2.0.15" + version: "2.0.17" shared_preferences_android: dependency: transitive description: name: shared_preferences_android url: "https://pub.dartlang.org" source: hosted - version: "2.0.12" - shared_preferences_ios: + version: "2.0.15" + shared_preferences_foundation: dependency: transitive description: - name: shared_preferences_ios + name: shared_preferences_foundation url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.3" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" + version: "2.1.3" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" shared_preferences_web: dependency: transitive description: @@ -927,14 +885,14 @@ packages: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.3" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "1.3.1" + version: "1.4.0" shelf_packages_handler: dependency: transitive description: @@ -955,7 +913,7 @@ packages: name: shelf_web_socket url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "1.0.3" sizer: dependency: "direct main" description: @@ -988,28 +946,28 @@ packages: name: source_gen url: "https://pub.dartlang.org" source: hosted - version: "1.2.2" + version: "1.2.6" source_helper: dependency: transitive description: name: source_helper url: "https://pub.dartlang.org" source: hosted - version: "1.3.2" + version: "1.3.3" source_map_stack_trace: dependency: transitive description: name: source_map_stack_trace url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" source_maps: dependency: transitive description: name: source_maps url: "https://pub.dartlang.org" source: hosted - version: "0.10.10" + version: "0.10.11" source_span: dependency: transitive description: @@ -1037,7 +995,7 @@ packages: name: stream_transform url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: @@ -1079,14 +1037,14 @@ packages: name: timezone url: "https://pub.dartlang.org" source: hosted - version: "0.8.0" + version: "0.9.1" timing: dependency: transitive description: name: timing url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" typed_data: dependency: transitive description: @@ -1122,69 +1080,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.4" - url_launcher: - dependency: transitive - description: - name: url_launcher - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.17" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.17" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" + version: "3.0.2" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.12" + version: "2.0.14" url_launcher_windows: dependency: transitive description: name: url_launcher_windows url: "https://pub.dartlang.org" source: hosted - version: "3.0.1" + version: "3.0.3" uuid: dependency: transitive description: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "3.0.6" + version: "3.0.7" vector_math: dependency: transitive description: @@ -1198,42 +1128,42 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "8.3.0" + version: "9.4.0" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" web_socket_channel: dependency: transitive description: name: web_socket_channel url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" webkit_inspection_protocol: dependency: transitive description: name: webkit_inspection_protocol url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" win32: dependency: transitive description: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.7.0" + version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.2.0+1" + version: "0.2.0+3" xml: dependency: transitive description: @@ -1249,5 +1179,5 @@ packages: source: hosted version: "3.1.1" sdks: - dart: ">=2.17.0 <3.0.0" + dart: ">=2.18.0 <3.0.0" flutter: ">=3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index ed1f23f..14837f4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -9,7 +9,7 @@ environment: sdk: ">=2.7.0 <3.0.0" dependencies: - connectivity_plus: ^2.2.0 + connectivity_plus: ^3.0.2 cupertino_icons: ^1.0.2 data_connection_checker: ^0.3.4 date_time_picker: ^2.1.0 @@ -19,7 +19,7 @@ dependencies: flutter_animarker: ^3.2.0 flutter_config: ^2.0.0 flutter_countdown_timer: ^4.1.0 - flutter_local_notifications: ^9.2.0 + flutter_local_notifications: ^13.0.0 flutter_polyline_points: ^1.0.0 flutter_spinkit: ^5.1.0 fluttertoast: ^8.0.8 @@ -27,19 +27,20 @@ dependencies: git: url: https://github.com/nguyenxdat/flutter_geocoder.git ref: 443b875d8ec80ce525cc6e8f17dfbbbbe7fa3028 - geolocator: ^8.0.0 + geolocator: ^9.0.2 get_it: ^7.2.0 google_maps_flutter: ^2.0.5 graphql_flutter: ^5.1.0 hive: ^2.0.4 intl: ^0.17.0 location: ^4.3.0 + mockito: ^5.3.2 modal_progress_hud: ^0.1.3 overlay_support: ^2.0.1 path_provider: ^2.0.9 provider: ^6.0.3 rxdart: ^0.27.3 - share_plus: ^4.0.8 + share_plus: ^6.3.0 shared_preferences: ^2.0.13 sizer: ^2.0.15 skeleton_text: ^3.0.0 @@ -48,7 +49,7 @@ dependencies: dev_dependencies: build_runner: ^2.1.7 - flutter_launcher_icons: ^0.9.2 + flutter_launcher_icons: ^0.11.0 flutter_test: sdk: flutter hive_generator: ^1.1.2 From 2755a3bc6750fd7148dbfd94134a961f7a43bba4 Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Sun, 19 Mar 2023 02:20:41 +0530 Subject: [PATCH 070/122] Fixed location permission keys in Info.plist file --- ios/Runner/Info.plist | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 6d16928..0223595 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -41,5 +41,9 @@ UIViewControllerBasedStatusBarAppearance + NSLocationWhenInUseUsageDescription + NSLocationAlwaysUsageDescription + CADisableMinimumFrameDurationOnPhone + From 1ee11db428a6edc44aab72a941c5179c6800714f Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Sun, 19 Mar 2023 03:16:55 +0530 Subject: [PATCH 071/122] Updated location usage descriptions --- ios/Runner/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 0223595..8f9ca12 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -42,7 +42,9 @@ UIViewControllerBasedStatusBarAppearance NSLocationWhenInUseUsageDescription + App needs access to your location to start the hike NSLocationAlwaysUsageDescription + App needs access to your location to start the hike CADisableMinimumFrameDurationOnPhone From 7b5cb75adf3b5b5c2b7b6f033056d6894a599b62 Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Sun, 19 Mar 2023 12:46:31 +0530 Subject: [PATCH 072/122] Updated versions --- ios/Flutter/AppFrameworkInfo.plist | 2 +- ios/Podfile | 2 +- ios/Podfile.lock | 82 ++++++++++++++-------------- ios/Runner.xcodeproj/project.pbxproj | 6 +- 4 files changed, 47 insertions(+), 45 deletions(-) diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 8d4492f..9625e10 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 9.0 + 11.0 diff --git a/ios/Podfile b/ios/Podfile index 1e8c3c9..88359b2 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +# platform :ios, '11.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index da15a5c..7b86bd1 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,7 +1,7 @@ PODS: - connectivity_plus (0.0.1): - Flutter - - Reachability + - ReachabilitySwift - Flutter (1.0.0) - flutter_config (0.0.1): - Flutter @@ -12,25 +12,27 @@ PODS: - Toast - geocoder (0.0.1): - Flutter - - geolocator (6.2.0): + - geolocator_apple (1.2.0): - Flutter - - google_maps_flutter (0.0.1): + - google_maps_flutter_ios (0.0.1): - Flutter - GoogleMaps - - GoogleMaps (4.1.0): - - GoogleMaps/Maps (= 4.1.0) - - GoogleMaps/Base (4.1.0) - - GoogleMaps/Maps (4.1.0): + - GoogleMaps (5.2.0): + - GoogleMaps/Maps (= 5.2.0) + - GoogleMaps/Base (5.2.0) + - GoogleMaps/Maps (5.2.0): - GoogleMaps/Base - location (0.0.1): - Flutter - - path_provider (0.0.1): + - path_provider_foundation (0.0.1): - Flutter - - Reachability (3.2) - - share (0.0.1): + - FlutterMacOS + - ReachabilitySwift (5.0.0) + - share_plus (0.0.1): - Flutter - - shared_preferences (0.0.1): + - shared_preferences_foundation (0.0.1): - Flutter + - FlutterMacOS - Toast (4.0.0) - uni_links (0.0.1): - Flutter @@ -42,18 +44,18 @@ DEPENDENCIES: - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - geocoder (from `.symlinks/plugins/geocoder/ios`) - - geolocator (from `.symlinks/plugins/geolocator/ios`) - - google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`) + - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`) + - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - location (from `.symlinks/plugins/location/ios`) - - path_provider (from `.symlinks/plugins/path_provider/ios`) - - share (from `.symlinks/plugins/share/ios`) - - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) - uni_links (from `.symlinks/plugins/uni_links/ios`) SPEC REPOS: trunk: - GoogleMaps - - Reachability + - ReachabilitySwift - Toast EXTERNAL SOURCES: @@ -69,39 +71,39 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/fluttertoast/ios" geocoder: :path: ".symlinks/plugins/geocoder/ios" - geolocator: - :path: ".symlinks/plugins/geolocator/ios" - google_maps_flutter: - :path: ".symlinks/plugins/google_maps_flutter/ios" + geolocator_apple: + :path: ".symlinks/plugins/geolocator_apple/ios" + google_maps_flutter_ios: + :path: ".symlinks/plugins/google_maps_flutter_ios/ios" location: :path: ".symlinks/plugins/location/ios" - path_provider: - :path: ".symlinks/plugins/path_provider/ios" - share: - :path: ".symlinks/plugins/share/ios" - shared_preferences: - :path: ".symlinks/plugins/shared_preferences/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/ios" uni_links: :path: ".symlinks/plugins/uni_links/ios" SPEC CHECKSUMS: - connectivity_plus: 5f0eb61093bec56935f21a1699dd2758bc895587 - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a + connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_config: 2226c1df19c78fe34a05eb7f1363445f18e76fc1 flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 - fluttertoast: 6122fa75143e992b1d3470f61000f591a798cc58 - geocoder: 3cfab70531a0b367e917bafe82df4c30f6d4c45a - geolocator: f5e3de65e241caba7ce3e8a618803387bda73384 - google_maps_flutter: df4e7de95264aa0a2f11aac0fc7e313acb8ffc7e - GoogleMaps: 008e2c80e38605b56b560e8deb73d4194ff30bef + fluttertoast: eb263d302cc92e04176c053d2385237e9f43fad0 + geocoder: 6bb9cb74d39e014874e837ec598a6644b8e1807d + geolocator_apple: cc556e6844d508c95df1e87e3ea6fa4e58c50401 + google_maps_flutter_ios: 66201f392bf62d500f07670a30488a247b9bb5b9 + GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693 location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740 - path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c - Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96 - share: 0b2c3e82132f5888bccca3351c504d0003b3b410 - shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d + path_provider_foundation: 37748e03f12783f9de2cb2c4eadfaa25fe6d4852 + ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 + share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 + shared_preferences_foundation: 297b3ebca31b34ec92be11acd7fb0ba932c822ca Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 uni_links: d97da20c7701486ba192624d99bffaaffcfc298a -PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c +PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index b50e351..5f87bb9 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -358,7 +358,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -435,7 +435,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -484,7 +484,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; From b2d38e416d2ed374a6797f46c50803552cb09fac Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Sun, 26 Mar 2023 23:42:55 +0530 Subject: [PATCH 073/122] Location Permission description updated --- ios/Runner/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 8f9ca12..d060eaa 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -42,9 +42,9 @@ UIViewControllerBasedStatusBarAppearance NSLocationWhenInUseUsageDescription - App needs access to your location to start the hike + Your location is needed to guide you during the hike and show your location to the group NSLocationAlwaysUsageDescription - App needs access to your location to start the hike + Your location is needed to guide you during the hike and show your location to the group CADisableMinimumFrameDurationOnPhone From d3b233ad21a83696d8c0149b5bfa918b30273077 Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Mon, 3 Apr 2023 14:04:12 +0530 Subject: [PATCH 074/122] Disable Dexing Artifact Transform --- android/gradle.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/android/gradle.properties b/android/gradle.properties index 94adc3a..be9024e 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true +android.enableDexingArtifactTransform=false \ No newline at end of file From 578bd0fc34ca67d9f6f67725589d0edd6213c411 Mon Sep 17 00:00:00 2001 From: tanisha083 Date: Mon, 3 Apr 2023 14:05:22 +0530 Subject: [PATCH 075/122] Force play-services-location to version 21.0.1 --- android/build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/build.gradle b/android/build.gradle index 1fe009b..cc0001f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -16,6 +16,11 @@ allprojects { google() jcenter() } + configurations.all { + resolutionStrategy { + force "com.google.android.gms:play-services-location:21.0.1" + } + } } rootProject.buildDir = '../build' From 86353b52ffde77670bc0b98d8408e187085f5956 Mon Sep 17 00:00:00 2001 From: omegaviv Date: Wed, 5 Apr 2023 16:26:40 +0530 Subject: [PATCH 076/122] resolved loca notification exception --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index 649e9e1..f4c42bb 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,7 +16,7 @@ void main() async { DeviceOrientation.portraitDown, ]); setupLocator(); - localNotif.initialize(); + await localNotif.initialize(); await hiveDb.init(); runApp( OverlaySupport( From 4c09e094126ace5cad1f2ff789981e118a290ff7 Mon Sep 17 00:00:00 2001 From: Tanisha Singh <104641430+tanisha083@users.noreply.github.com> Date: Tue, 11 Apr 2023 11:30:32 +0530 Subject: [PATCH 077/122] Removed DexingArtifactTransform=false --- android/gradle.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/android/gradle.properties b/android/gradle.properties index be9024e..94adc3a 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,4 +1,3 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -android.enableDexingArtifactTransform=false \ No newline at end of file From b9cb8db63709d58e58f022c1a965345dd186beab Mon Sep 17 00:00:00 2001 From: Abhishek Date: Fri, 5 Jan 2024 02:39:57 +0530 Subject: [PATCH 078/122] changes --- .env.example | 7 +- .fvm/flutter_sdk | 1 + .fvm/fvm_config.json | 4 + .metadata | 39 +- .vscode/launch.json | 25 + .vscode/settings.json | 4 + analysis_options.yaml | 28 + android/.gitignore | 2 + android/app/build.gradle | 10 +- android/app/src/debug/AndroidManifest.xml | 6 +- .../app/src/main/res/drawable/app_icon.png | Bin 15911 -> 0 bytes .../main/res/mipmap-hdpi/launcher_icon.png | Bin 4832 -> 0 bytes .../main/res/mipmap-mdpi/launcher_icon.png | Bin 2510 -> 0 bytes .../main/res/mipmap-xhdpi/launcher_icon.png | Bin 7917 -> 0 bytes .../main/res/mipmap-xxhdpi/launcher_icon.png | Bin 16097 -> 0 bytes .../main/res/mipmap-xxxhdpi/launcher_icon.png | Bin 26506 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 4 +- android/app/src/main/res/values/styles.xml | 4 +- android/app/src/profile/AndroidManifest.xml | 6 +- android/build.gradle | 4 +- android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- android/settings.gradle | 34 +- ios/RunnerTests/RunnerTests.swift | 12 + lib/components/active_beacon.dart | 4 +- lib/components/beacon_card.dart | 52 +- lib/components/create_join_dialog.dart | 30 +- lib/components/dialog_boxes.dart | 6 +- lib/components/group_card.dart | 22 +- lib/components/hike_button.dart | 10 +- lib/components/hike_screen_widget.dart | 105 +-- lib/components/loading_screen.dart | 2 +- lib/components/timer.dart | 20 +- lib/config/environment_config.dart | 6 +- lib/locator.dart | 14 +- lib/main.dart | 8 +- lib/models/beacon/beacon.dart | 32 +- lib/models/beacon/beacon.g.dart | 22 +- lib/models/group/group.dart | 18 +- lib/models/group/group.g.dart | 12 +- lib/models/landmarks/landmark.dart | 6 +- lib/models/landmarks/landmark.g.dart | 4 +- lib/models/location/location.dart | 8 +- lib/models/location/location.g.dart | 4 +- lib/models/user/user_info.dart | 24 +- lib/models/user/user_info.g.dart | 16 +- lib/queries/auth.dart | 8 +- lib/queries/beacon.dart | 14 +- lib/queries/group.dart | 6 +- lib/router.dart | 8 +- lib/services/connection_checker.dart | 4 +- lib/services/database_mutation_functions.dart | 249 ++--- lib/services/graphql_config.dart | 10 +- lib/services/hive_localdb.dart | 28 +- lib/services/local_notification.dart | 22 +- lib/services/navigation_service.dart | 12 +- lib/services/shared_preference_service.dart | 4 +- lib/services/size_config.dart | 20 +- lib/services/user_config.dart | 20 +- lib/services/validators.dart | 14 +- lib/splash_screen.dart | 40 +- lib/utilities/indication_painter.dart | 6 +- lib/view_model/auth_screen_model.dart | 54 +- lib/view_model/group_screen_view_model.dart | 68 +- lib/view_model/hike_screen_model.dart | 174 ++-- lib/view_model/home_screen_view_model.dart | 38 +- lib/views/auth_screen.dart | 169 ++-- lib/views/base_view.dart | 21 +- lib/views/group_screen.dart | 35 +- lib/views/hike_screen.dart | 27 +- lib/views/home_screen.dart | 36 +- lib/views/workspace.code-workspace | 4 +- linux/.gitignore | 1 + linux/CMakeLists.txt | 145 +++ linux/flutter/CMakeLists.txt | 88 ++ linux/flutter/generated_plugin_registrant.cc | 19 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 25 + linux/main.cc | 6 + linux/my_application.cc | 104 +++ linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 2 + macos/Flutter/Flutter-Release.xcconfig | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 26 + macos/Podfile | 43 + macos/Runner.xcodeproj/project.pbxproj | 695 ++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 851 +++++++++++------- pubspec.yaml | 61 +- test/model_tests/beacon_test.dart | 20 +- test/model_tests/user_test.dart | 52 +- test/widget_test.dart | 30 + web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes windows/.gitignore | 17 + windows/CMakeLists.txt | 108 +++ windows/flutter/CMakeLists.txt | 109 +++ .../flutter/generated_plugin_registrant.cc | 26 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 28 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 +++ windows/runner/flutter_window.cpp | 71 ++ windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 20 + windows/runner/utils.cpp | 65 ++ windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 ++++++ windows/runner/win32_window.h | 102 +++ 135 files changed, 4539 insertions(+), 1154 deletions(-) create mode 120000 .fvm/flutter_sdk create mode 100644 .fvm/fvm_config.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 analysis_options.yaml delete mode 100644 android/app/src/main/res/drawable/app_icon.png delete mode 100644 android/app/src/main/res/mipmap-hdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-mdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xhdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png delete mode 100644 android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Podfile create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift create mode 100644 test/widget_test.dart create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.env.example b/.env.example index 34eb57b..226cfda 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,3 @@ -ANDROID_MAP_API_KEY= -IOS_MAP_API_KEY= -HTTP_ENDPOINT=(for example: https://beacon.aadibajpai.com/graphql) -WEBSOCKET_ENDPOINT=(for example: wss://beacon.aadibajpai.com/subscriptions) \ No newline at end of file +ANDROID_MAP_API_KEY= +IOS_MAP_API_KEY= +HTTP_ENDPOINT=http://localhost:4000/graphql \ No newline at end of file diff --git a/.fvm/flutter_sdk b/.fvm/flutter_sdk new file mode 120000 index 0000000..6826187 --- /dev/null +++ b/.fvm/flutter_sdk @@ -0,0 +1 @@ +/Users/abhishek/fvm/versions/3.16.5 \ No newline at end of file diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json new file mode 100644 index 0000000..b35b02a --- /dev/null +++ b/.fvm/fvm_config.json @@ -0,0 +1,4 @@ +{ + "flutterSdkVersion": "3.16.5", + "flavors": {} +} \ No newline at end of file diff --git a/.metadata b/.metadata index 80206eb..3e6e02a 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: c5a4b4029c0798f37c4a39b479d7cb75daa7b05c - channel: stable + revision: "78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: android + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: ios + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: linux + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: macos + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: web + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + - platform: windows + create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a67b4a0 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,25 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "beacon", + "request": "launch", + "type": "dart" + }, + { + "name": "beacon (profile mode)", + "request": "launch", + "type": "dart", + "flutterMode": "profile" + }, + { + "name": "beacon (release mode)", + "request": "launch", + "type": "dart", + "flutterMode": "release" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..25c8579 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic", + "dart.flutterSdkPath": "~/fvm/versions/3.16.5" +} \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android/.gitignore b/android/.gitignore index 0a741cb..6f56801 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -9,3 +9,5 @@ GeneratedPluginRegistrant.java # Remember to never publicly share your keystore. # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle index 1e4fad4..999f42b 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -6,9 +6,9 @@ if (localPropertiesFile.exists()) { } } def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} +// if (flutterRoot == null) { +// // throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +// } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { @@ -26,7 +26,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: project(':flutter_config').projectDir.getPath() + "/dotenv.gradle" android { - compileSdkVersion 31 + compileSdkVersion 33 buildToolsVersion '29.0.0' sourceSets { @@ -57,6 +57,6 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.22" implementation "com.android.support:multidex:1.0.3" } diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 226f7ba..399f698 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/android/app/src/main/res/drawable/app_icon.png b/android/app/src/main/res/drawable/app_icon.png deleted file mode 100644 index a1f87e14bdee3b69620f2ac315f971bae2926760..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15911 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 O2a*z#7p)aG4E!HnZt~s$ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png deleted file mode 100644 index e520762060eb71133dee9a1379d52e83cce3a05e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26506 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 MBoxK#M2$oL2bhP0rvLx| diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml index 449a9f9..06952be 100644 --- a/android/app/src/main/res/values-night/styles.xml +++ b/android/app/src/main/res/values-night/styles.xml @@ -3,14 +3,14 @@

    &KT2?hxL?27v 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 Mjr5#;GgQasf8`elX)M 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