From e7331e7d936bbac1fdcfb79c0f113850fcf0041f Mon Sep 17 00:00:00 2001 From: Guillaume David Date: Tue, 11 Jun 2024 23:11:43 +0200 Subject: [PATCH] Updates --- android/app/src/main/AndroidManifest.xml | 19 ++++ android/build.gradle | 2 +- lib/deviceAdvertizinScan.dart | 91 +++++++++++++++++++ lib/deviceSelection.dart | 73 ++++++++++----- macos/Podfile.lock | 14 ++- macos/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- 7 files changed, 178 insertions(+), 25 deletions(-) create mode 100644 lib/deviceAdvertizinScan.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 575c1bc..e799dce 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,4 +1,22 @@ + + + + + + + + + + + + + + + + + + + diff --git a/android/build.gradle b/android/build.gradle index e83fb5d..cc71bc7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '2.0.0' repositories { google() mavenCentral() diff --git a/lib/deviceAdvertizinScan.dart b/lib/deviceAdvertizinScan.dart new file mode 100644 index 0000000..688c7a7 --- /dev/null +++ b/lib/deviceAdvertizinScan.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_blue_plus/flutter_blue_plus.dart'; +import 'package:flutter_osm_plugin/flutter_osm_plugin.dart'; + +class DeviceAdvertizinScan extends StatefulWidget { + const DeviceAdvertizinScan( + {super.key, + required this.title, + required this.deviceName, + required this.deviceAddress, + required this.remoteId}); + + final String title; + final String deviceName; + final String deviceAddress; + final String remoteId; + + @override + State createState() => _DeviceAdvertizinScanState(); +} + +class _DeviceAdvertizinScanState extends State { + List scanResults = []; + + TextEditingController tecTakingPoint = TextEditingController(); + MapController mapController = MapController( + initPosition: GeoPoint(latitude: 47.4358055, longitude: 8.4737324), + ); + + @override + void initState() { + tecTakingPoint.text = '5'; + FlutterBluePlus.startScan(); + } + + @override + void dispose() { + FlutterBluePlus.stopScan(); + print('Page disposed'); + super.dispose(); + } + + String value = 'Aucune valeur trouvée'; + @override + Widget build(BuildContext context) { + FlutterBluePlus.onScanResults.listen((results) { + setState(() { + if (results.length > 0) value = results[0].toString(); + }); + }); + + return Scaffold( + appBar: AppBar( + title: Text(widget.title, style: const TextStyle(color: Colors.white)), + backgroundColor: Colors.blue, + leading: IconButton( + icon: const Icon(Icons.arrow_back, color: Colors.white), + onPressed: () { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + '(debug) Vous devez redémarrer l application et réaliser un nouveau scan pour voir les nouvelles valeurs (FlutterBluePlus.startScan())'), + ), + ); + return; + }, + ), + ), + body: Column( + children: [ + Container( + alignment: Alignment.topCenter, + child: Text('Advertizin data value for ${widget.deviceName}' + + ' with remoteId ${widget.remoteId}')), + Container( + alignment: Alignment.center, + child: Text(value, + style: const TextStyle( + color: Colors.black, + fontSize: 20, + fontWeight: FontWeight.bold))), + Container(child: CircularProgressIndicator()), + Spacer(), + Container( + child: Text( + 'La trame publicitaire est en cours de réception et actualisée en temps réel.')), + ], + ), + ); + } +} diff --git a/lib/deviceSelection.dart b/lib/deviceSelection.dart index 829e38c..ab2d6bd 100644 --- a/lib/deviceSelection.dart +++ b/lib/deviceSelection.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart'; +import 'package:gps_map_flowpoint/deviceAdvertizinScan.dart'; import 'package:gps_map_flowpoint/deviceFlowMap.dart'; class DeviceSelection extends StatefulWidget { @@ -58,7 +59,7 @@ class _DeviceSelectionState extends State { Widget build(BuildContext context) { // Filtered list of devices List filteredDevices = scanResults - .where((result) => result.device.name + .where((result) => result.device.platformName .toLowerCase() .contains(tecSearch.text.toLowerCase())) .toList(); @@ -76,7 +77,7 @@ class _DeviceSelectionState extends State { child: TextFormField( controller: tecSearch, decoration: InputDecoration( - hintText: 'Rechercher un appareil', + hintText: 'Rechercher un appareil par nom', prefixIcon: Icon(Icons.search), ), onChanged: (value) { @@ -91,26 +92,55 @@ class _DeviceSelectionState extends State { itemBuilder: (context, index) { ScanResult result = filteredDevices[index]; return ListTile( - title: Text(result.device.name), - subtitle: Text(result.device.id.id), - onTap: () { - //Stop scanning when a device is selected - FlutterBluePlus.stopScan(); - setState(() { - isScanning = false; - }); - - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => DeviceFlowMap( - title: 'GPS Map Flowpoint', - deviceName: result.device.name, - deviceAddress: result.device.id.id, - ), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + GestureDetector( + onTap: () { + //Stop scanning when a device is selected + FlutterBluePlus.stopScan(); + setState(() { + isScanning = false; + }); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DeviceAdvertizinScan( + title: 'Advertising Frame View', + deviceName: result.device.platformName, + deviceAddress: result.device.remoteId.str, + remoteId: result.device.remoteId.str, + ), + ), + ); + }, + child: Icon(Icons.info_outline), ), - ); - }, + GestureDetector( + onTap: () { + //Stop scanning when a device is selected + FlutterBluePlus.stopScan(); + setState(() { + isScanning = false; + }); + + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DeviceFlowMap( + title: 'GPS Map Flowpoint', + deviceName: result.device.platformName, + deviceAddress: result.device.remoteId.str, + ), + ), + ); + }, + child: Icon(Icons.map_outlined), + ), + ], + ), + title: Text(result.device.platformName), + subtitle: Text(result.device.remoteId.str), ); }, ), @@ -121,6 +151,7 @@ class _DeviceSelectionState extends State { backgroundColor: Colors.blue, onPressed: () { print('Scanning'); + setState(() { isScanning = !isScanning; if (isScanning) { diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 36a106a..ec47bfc 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -2,21 +2,33 @@ PODS: - flutter_blue_plus (0.0.1): - FlutterMacOS - FlutterMacOS (1.0.0) + - geolocator_apple (1.2.0): + - FlutterMacOS + - url_launcher_macos (0.0.1): + - FlutterMacOS DEPENDENCIES: - flutter_blue_plus (from `Flutter/ephemeral/.symlinks/plugins/flutter_blue_plus/macos`) - FlutterMacOS (from `Flutter/ephemeral`) + - geolocator_apple (from `Flutter/ephemeral/.symlinks/plugins/geolocator_apple/macos`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) EXTERNAL SOURCES: flutter_blue_plus: :path: Flutter/ephemeral/.symlinks/plugins/flutter_blue_plus/macos FlutterMacOS: :path: Flutter/ephemeral + geolocator_apple: + :path: Flutter/ephemeral/.symlinks/plugins/geolocator_apple/macos + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos SPEC CHECKSUMS: flutter_blue_plus: e2868679021f19d12a8c0c58a33f1df66ec7fa6a FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 + geolocator_apple: 72a78ae3f3e4ec0db62117bd93e34523f5011d58 + url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 -COCOAPODS: 1.14.2 +COCOAPODS: 1.15.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index fc2496d..259d71b 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -259,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index bf40508..ac0ab29 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@