added GPS feature
This commit is contained in:
37
lib/model/gps_data.dart
Normal file
37
lib/model/gps_data.dart
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
class GpsData {
|
||||||
|
int id;
|
||||||
|
String team_name;
|
||||||
|
String event_code;
|
||||||
|
double lat;
|
||||||
|
double lon;
|
||||||
|
int created_at;
|
||||||
|
|
||||||
|
GpsData(
|
||||||
|
{required this.id,
|
||||||
|
required this.team_name,
|
||||||
|
required this.event_code,
|
||||||
|
required this.lat,
|
||||||
|
required this.lon,
|
||||||
|
required this.created_at});
|
||||||
|
|
||||||
|
factory GpsData.fromMap(Map<String, dynamic> json) {
|
||||||
|
return GpsData(
|
||||||
|
id: json["id"],
|
||||||
|
team_name: json["team_name"],
|
||||||
|
event_code: json["event_code"],
|
||||||
|
lat: json["lat"],
|
||||||
|
lon: json["lon"],
|
||||||
|
created_at: json["created_at"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toMap() {
|
||||||
|
return {
|
||||||
|
'id': id,
|
||||||
|
'team_name': team_name,
|
||||||
|
'event_code': event_code,
|
||||||
|
'lat': lat,
|
||||||
|
'lon': lon,
|
||||||
|
'created_at': created_at
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -9,6 +9,7 @@ import 'package:intl/intl.dart';
|
|||||||
import 'package:latlong2/latlong.dart';
|
import 'package:latlong2/latlong.dart';
|
||||||
import 'package:rogapp/main.dart';
|
import 'package:rogapp/main.dart';
|
||||||
import 'package:rogapp/model/destination.dart';
|
import 'package:rogapp/model/destination.dart';
|
||||||
|
import 'package:rogapp/model/gps_data.dart';
|
||||||
import 'package:rogapp/pages/camera/camera_page.dart';
|
import 'package:rogapp/pages/camera/camera_page.dart';
|
||||||
import 'package:rogapp/pages/index/index_controller.dart';
|
import 'package:rogapp/pages/index/index_controller.dart';
|
||||||
import 'package:rogapp/routes/app_pages.dart';
|
import 'package:rogapp/routes/app_pages.dart';
|
||||||
@ -17,6 +18,7 @@ import 'package:rogapp/services/external_service.dart';
|
|||||||
import 'package:rogapp/services/location_service.dart';
|
import 'package:rogapp/services/location_service.dart';
|
||||||
import 'package:rogapp/services/maxtrix_service.dart';
|
import 'package:rogapp/services/maxtrix_service.dart';
|
||||||
import 'package:rogapp/services/perfecture_service.dart';
|
import 'package:rogapp/services/perfecture_service.dart';
|
||||||
|
import 'package:rogapp/utils/database_gps.dart';
|
||||||
import 'package:rogapp/utils/database_helper.dart';
|
import 'package:rogapp/utils/database_helper.dart';
|
||||||
import 'package:rogapp/widgets/bottom_sheet_new.dart';
|
import 'package:rogapp/widgets/bottom_sheet_new.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
@ -508,6 +510,22 @@ class DestinationController extends GetxController {
|
|||||||
final la = position.latitude;
|
final la = position.latitude;
|
||||||
final ln = position.longitude;
|
final ln = position.longitude;
|
||||||
|
|
||||||
|
print("--- gps is ${la}, ${ln}");
|
||||||
|
|
||||||
|
//add gps to database
|
||||||
|
GpsDatabaseHelper db = GpsDatabaseHelper.instance;
|
||||||
|
final team_name = indexController.currentUser[0]["user"]['team_name'];
|
||||||
|
final event_code = indexController.currentUser[0]["user"]["event_code"];
|
||||||
|
print("--- curr gps is ${la}, ${ln}");
|
||||||
|
GpsData gps_data = GpsData(
|
||||||
|
id: 0,
|
||||||
|
team_name: team_name,
|
||||||
|
event_code: event_code,
|
||||||
|
lat: la,
|
||||||
|
lon: ln,
|
||||||
|
created_at: DateTime.now().microsecondsSinceEpoch);
|
||||||
|
await db.insertGps(gps_data);
|
||||||
|
|
||||||
for (GeoJsonFeature fs in indexController.locations[0].collection) {
|
for (GeoJsonFeature fs in indexController.locations[0].collection) {
|
||||||
GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint;
|
GeoJsonMultiPoint mp = fs.geometry as GeoJsonMultiPoint;
|
||||||
LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude,
|
LatLng pt = LatLng(mp.geoSerie!.geoPoints[0].latitude,
|
||||||
@ -643,12 +661,6 @@ class DestinationController extends GetxController {
|
|||||||
await checkForCheckin();
|
await checkForCheckin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void onClose() {
|
|
||||||
super.onClose();
|
|
||||||
super.onClose();
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() async {
|
void onInit() async {
|
||||||
startGame();
|
startGame();
|
||||||
|
|||||||
153
lib/pages/gps/gps_page.dart
Normal file
153
lib/pages/gps/gps_page.dart
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_map/flutter_map.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:latlong2/latlong.dart';
|
||||||
|
import 'package:rogapp/model/gps_data.dart';
|
||||||
|
import 'package:rogapp/pages/destination/destination_controller.dart';
|
||||||
|
import 'package:rogapp/pages/index/index_controller.dart';
|
||||||
|
import 'package:rogapp/utils/database_gps.dart';
|
||||||
|
import 'package:rogapp/widgets/base_layer_widget.dart';
|
||||||
|
|
||||||
|
class GpsPage extends StatefulWidget {
|
||||||
|
const GpsPage({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<GpsPage> createState() => _GpsPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _GpsPageState extends State<GpsPage> {
|
||||||
|
var gpsData = [].obs;
|
||||||
|
MapController? mapController;
|
||||||
|
StreamSubscription? subscription;
|
||||||
|
final IndexController indexController = Get.find<IndexController>();
|
||||||
|
final DestinationController destinationController =
|
||||||
|
Get.find<DestinationController>();
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
super.initState();
|
||||||
|
loadGpsData();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loadGpsData() async {
|
||||||
|
final team_name = indexController.currentUser[0]["user"]['team_name'];
|
||||||
|
final event_code = indexController.currentUser[0]["user"]["event_code"];
|
||||||
|
GpsDatabaseHelper db = GpsDatabaseHelper.instance;
|
||||||
|
gpsData.value = await db.getGPSData(team_name, event_code);
|
||||||
|
print("--- gps data ${gpsData.value[gpsData.length - 1].lat} ----");
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget getMarkerShape(GpsData i) {
|
||||||
|
return Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
InkWell(
|
||||||
|
onTap: () {},
|
||||||
|
child: Container(
|
||||||
|
height: 22,
|
||||||
|
width: 22,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: Colors.purple.shade300,
|
||||||
|
border: Border.all(
|
||||||
|
color: Colors.purple,
|
||||||
|
width: 3,
|
||||||
|
style: BorderStyle.solid)),
|
||||||
|
child: const Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.circle,
|
||||||
|
size: 6.0,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
color: Colors.white,
|
||||||
|
child: Text(
|
||||||
|
DateTime.fromMicrosecondsSinceEpoch(i.created_at)
|
||||||
|
.hour
|
||||||
|
.toString() +
|
||||||
|
":" +
|
||||||
|
DateTime.fromMicrosecondsSinceEpoch(i.created_at)
|
||||||
|
.minute
|
||||||
|
.toString(),
|
||||||
|
// ":" +
|
||||||
|
// DateTime.fromMicrosecondsSinceEpoch(i.created_at)
|
||||||
|
// .second
|
||||||
|
// .toString(),
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 16,
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
color: Colors.black,
|
||||||
|
))),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: Text("GPS way points"),
|
||||||
|
),
|
||||||
|
body: Container(
|
||||||
|
child: Obx(
|
||||||
|
() => FlutterMap(
|
||||||
|
mapController: mapController,
|
||||||
|
options: MapOptions(
|
||||||
|
maxZoom: 18.4,
|
||||||
|
onMapReady: () {
|
||||||
|
subscription =
|
||||||
|
mapController!.mapEventStream.listen((MapEvent mapEvent) {
|
||||||
|
if (mapEvent is MapEventMoveStart) {
|
||||||
|
//print(DateTime.now().toString() + ' [MapEventMoveStart] START');
|
||||||
|
// do something
|
||||||
|
}
|
||||||
|
if (mapEvent is MapEventMoveEnd) {}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//center: LatLng(37.15319600454702, 139.58765950528198),
|
||||||
|
bounds: indexController.currentBound.isNotEmpty
|
||||||
|
? indexController.currentBound[0]
|
||||||
|
: LatLngBounds.fromPoints([
|
||||||
|
LatLng(35.03999881162295, 136.40587119778962),
|
||||||
|
LatLng(36.642756778706904, 137.95226720406063)
|
||||||
|
]),
|
||||||
|
zoom: 1,
|
||||||
|
interactiveFlags: InteractiveFlag.pinchZoom | InteractiveFlag.drag,
|
||||||
|
|
||||||
|
onPositionChanged: (MapPosition pos, isvalue) {
|
||||||
|
indexController.currentBound = [pos.bounds!];
|
||||||
|
},
|
||||||
|
onTap: (tapPos, cord) {}, // Hide popup when the map is tapped.
|
||||||
|
),
|
||||||
|
children: [
|
||||||
|
const BaseLayer(),
|
||||||
|
MarkerLayer(
|
||||||
|
markers: gpsData.map((i) {
|
||||||
|
return Marker(
|
||||||
|
anchorPos: AnchorPos.exactly(Anchor(108.0, 18.0)),
|
||||||
|
height: 32.0,
|
||||||
|
width: 120.0,
|
||||||
|
point: LatLng(i.lat, i.lon),
|
||||||
|
builder: (ctx) {
|
||||||
|
return getMarkerShape(i);
|
||||||
|
// return Container(
|
||||||
|
// width: 40,
|
||||||
|
// height: 40,
|
||||||
|
// color: Colors.orange,
|
||||||
|
// );
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -255,7 +255,7 @@ class IndexController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void changeUser(Map<String, dynamic> value, {bool replace = true}) {
|
void changeUser(Map<String, dynamic> value, {bool replace = true}) {
|
||||||
////print("---- change user to $value -----");
|
//print("---- change user to $value -----");
|
||||||
currentUser.clear();
|
currentUser.clear();
|
||||||
currentUser.add(value);
|
currentUser.add(value);
|
||||||
if (replace) {
|
if (replace) {
|
||||||
|
|||||||
@ -1,9 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:rogapp/model/gps_data.dart';
|
||||||
import 'package:rogapp/pages/destination/destination_controller.dart';
|
import 'package:rogapp/pages/destination/destination_controller.dart';
|
||||||
import 'package:rogapp/pages/drawer/drawer_page.dart';
|
import 'package:rogapp/pages/drawer/drawer_page.dart';
|
||||||
import 'package:rogapp/pages/index/index_controller.dart';
|
import 'package:rogapp/pages/index/index_controller.dart';
|
||||||
import 'package:rogapp/routes/app_pages.dart';
|
import 'package:rogapp/routes/app_pages.dart';
|
||||||
|
import 'package:rogapp/utils/database_gps.dart';
|
||||||
import 'package:rogapp/widgets/list_widget.dart';
|
import 'package:rogapp/widgets/list_widget.dart';
|
||||||
import 'package:rogapp/widgets/map_widget.dart';
|
import 'package:rogapp/widgets/map_widget.dart';
|
||||||
|
|
||||||
@ -23,6 +25,16 @@ class IndexPage extends GetView<IndexController> {
|
|||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
title: Text("add_location".tr),
|
title: Text("add_location".tr),
|
||||||
actions: [
|
actions: [
|
||||||
|
IconButton(
|
||||||
|
onPressed: () async {
|
||||||
|
// GpsDatabaseHelper db = GpsDatabaseHelper.instance;
|
||||||
|
// List<GpsData> data = await db.getGPSData(
|
||||||
|
// indexController.currentUser[0]["user"]['team_name'],
|
||||||
|
// indexController.currentUser[0]["user"]["event_code"]);
|
||||||
|
// print("GPS data is ${data.length}");
|
||||||
|
Get.toNamed(AppPages.GPS);
|
||||||
|
},
|
||||||
|
icon: const Icon(Icons.telegram)),
|
||||||
IconButton(
|
IconButton(
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Get.toNamed(AppPages.HISTORY);
|
Get.toNamed(AppPages.HISTORY);
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import 'package:rogapp/pages/category/category_page.dart';
|
|||||||
import 'package:rogapp/pages/changepassword/change_password_page.dart';
|
import 'package:rogapp/pages/changepassword/change_password_page.dart';
|
||||||
import 'package:rogapp/pages/city/city_page.dart';
|
import 'package:rogapp/pages/city/city_page.dart';
|
||||||
import 'package:rogapp/pages/destination/destination_binding.dart';
|
import 'package:rogapp/pages/destination/destination_binding.dart';
|
||||||
|
import 'package:rogapp/pages/gps/gps_page.dart';
|
||||||
import 'package:rogapp/pages/history/history_page.dart';
|
import 'package:rogapp/pages/history/history_page.dart';
|
||||||
import 'package:rogapp/pages/home/home_binding.dart';
|
import 'package:rogapp/pages/home/home_binding.dart';
|
||||||
import 'package:rogapp/pages/home/home_page.dart';
|
import 'package:rogapp/pages/home/home_page.dart';
|
||||||
@ -46,6 +47,7 @@ class AppPages {
|
|||||||
static const CAMERA_PAGE = Routes.CAMERA_PAGE;
|
static const CAMERA_PAGE = Routes.CAMERA_PAGE;
|
||||||
static const PROGRESS = Routes.PROGRESS;
|
static const PROGRESS = Routes.PROGRESS;
|
||||||
static const HISTORY = Routes.HISTORY;
|
static const HISTORY = Routes.HISTORY;
|
||||||
|
static const GPS = Routes.GPS;
|
||||||
|
|
||||||
static final routes = [
|
static final routes = [
|
||||||
GetPage(
|
GetPage(
|
||||||
@ -102,6 +104,10 @@ class AppPages {
|
|||||||
GetPage(
|
GetPage(
|
||||||
name: Routes.HISTORY,
|
name: Routes.HISTORY,
|
||||||
page: () => const HistoryPage(),
|
page: () => const HistoryPage(),
|
||||||
|
),
|
||||||
|
GetPage(
|
||||||
|
name: Routes.GPS,
|
||||||
|
page: () => const GpsPage(),
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,4 +25,5 @@ abstract class Routes {
|
|||||||
static const CAMERA_PAGE = '/camera_page';
|
static const CAMERA_PAGE = '/camera_page';
|
||||||
static const PROGRESS = '/progress';
|
static const PROGRESS = '/progress';
|
||||||
static const HISTORY = '/history';
|
static const HISTORY = '/history';
|
||||||
|
static const GPS = '/gp';
|
||||||
}
|
}
|
||||||
|
|||||||
72
lib/utils/database_gps.dart
Normal file
72
lib/utils/database_gps.dart
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
import 'dart:io';
|
||||||
|
import 'package:path/path.dart';
|
||||||
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
import 'package:rogapp/model/gps_data.dart';
|
||||||
|
import 'package:sqflite/sqflite.dart';
|
||||||
|
|
||||||
|
class GpsDatabaseHelper {
|
||||||
|
GpsDatabaseHelper._privateConstructor();
|
||||||
|
static final GpsDatabaseHelper instance =
|
||||||
|
GpsDatabaseHelper._privateConstructor();
|
||||||
|
static Database? _database;
|
||||||
|
Future<Database> get database async => _database ??= await _initDatabase();
|
||||||
|
|
||||||
|
Future<Database> _initDatabase() async {
|
||||||
|
Directory documentDirectory = await getApplicationDocumentsDirectory();
|
||||||
|
String path = join(documentDirectory.path, 'rog.db');
|
||||||
|
// return await openDatabase(
|
||||||
|
// path,
|
||||||
|
// version: 1,
|
||||||
|
// onCreate: _onCreate,
|
||||||
|
// );
|
||||||
|
return openDatabase(
|
||||||
|
join(
|
||||||
|
await getDatabasesPath(),
|
||||||
|
'gps.db',
|
||||||
|
),
|
||||||
|
version: 1,
|
||||||
|
onCreate: _onCreate);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future _onCreate(Database db, int version) async {
|
||||||
|
await db.execute('''
|
||||||
|
CREATE TABLE gps(
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
team_name TEXT,
|
||||||
|
event_code TEXT,
|
||||||
|
lat REAL,
|
||||||
|
lon REAL,
|
||||||
|
created_at INTEGER
|
||||||
|
)
|
||||||
|
''');
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<int> insertGps(GpsData gps) async {
|
||||||
|
Database db = await instance.database;
|
||||||
|
int? nextOrder =
|
||||||
|
Sqflite.firstIntValue(await db.rawQuery('SELECT MAX(id) FROM gps'));
|
||||||
|
nextOrder = nextOrder ?? 0;
|
||||||
|
nextOrder = nextOrder + 1;
|
||||||
|
gps.id = nextOrder;
|
||||||
|
print("---- insering ${gps.toMap()}");
|
||||||
|
int res = await db.insert(
|
||||||
|
'gps',
|
||||||
|
gps.toMap(),
|
||||||
|
conflictAlgorithm: ConflictAlgorithm.replace,
|
||||||
|
);
|
||||||
|
//print("------ database helper insert $res-----------::::::::");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<GpsData>> getGPSData(String team_name, String event_code) async {
|
||||||
|
Database db = await instance.database;
|
||||||
|
var gpss = await db.query('gps',
|
||||||
|
where: "team_name = ? and event_code = ?",
|
||||||
|
whereArgs: [team_name, event_code],
|
||||||
|
orderBy: 'created_at');
|
||||||
|
List<GpsData> gpsDatas =
|
||||||
|
gpss.isNotEmpty ? gpss.map((e) => GpsData.fromMap(e)).toList() : [];
|
||||||
|
print("--------- db list $gpsDatas");
|
||||||
|
return gpsDatas;
|
||||||
|
}
|
||||||
|
}
|
||||||
104
pubspec.lock
104
pubspec.lock
@ -13,10 +13,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: archive
|
name: archive
|
||||||
sha256: "49b1fad315e57ab0bbc15bcbb874e83116a1d78f77ebd500a4af6c9407d6b28e"
|
sha256: "7e0d52067d05f2e0324268097ba723b71cb41ac8a6a2b24d1edf9c536b987b03"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.3.8"
|
version: "3.4.6"
|
||||||
args:
|
args:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -45,26 +45,26 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: camera
|
name: camera
|
||||||
sha256: f63f2687fb1795c36f7c57b18a03071880eabb0fd8b5291b0fcd3fb979cb0fb1
|
sha256: "1f9010f0689774380fbcd7d6b7820a5157e8e97685fa66d619e1d1f58b3fdf93"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.10.5+4"
|
version: "0.10.5+5"
|
||||||
camera_android:
|
camera_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: camera_android
|
name: camera_android
|
||||||
sha256: ed4f645848074166fc3b8e20350f83ca07e09a2becc1e185040ee561f955d4df
|
sha256: c978373b41a463c9edda3fea0a06966299f55db63232cd0f0d4efc21a59a0006
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.10.8+8"
|
version: "0.10.8+12"
|
||||||
camera_avfoundation:
|
camera_avfoundation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: camera_avfoundation
|
name: camera_avfoundation
|
||||||
sha256: "718b60ed2e22b4067fe6e2c0e9ebe2856c2de5c8b1289ba95d10db85b0b00bc2"
|
sha256: "9495e633cda700717bbe299b0979e6c4a08cee45f298945973dc9cf3e4c1cba5"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.13+4"
|
version: "0.9.13+6"
|
||||||
camera_camera:
|
camera_camera:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -165,10 +165,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: cross_file
|
name: cross_file
|
||||||
sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb
|
sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.3+5"
|
version: "0.3.3+6"
|
||||||
crypto:
|
crypto:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -221,10 +221,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file
|
name: file
|
||||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "7.0.0"
|
||||||
file_selector_linux:
|
file_selector_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -237,10 +237,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: file_selector_macos
|
name: file_selector_macos
|
||||||
sha256: "182c3f8350cee659f7b115e956047ee3dc672a96665883a545e81581b9a82c72"
|
sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.9.3+2"
|
version: "0.9.3+3"
|
||||||
file_selector_platform_interface:
|
file_selector_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -282,10 +282,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_image
|
name: flutter_image
|
||||||
sha256: b41c6cbf9462d8cbdeeb7b5dd84c7bca5176e9e4d6e8b968290e371ab758cc0c
|
sha256: e3662dc99ee90a8d17eb178bfbcaabaa96c11504d6e2bab53b9158ed0439910a
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.8"
|
version: "4.1.9"
|
||||||
flutter_keyboard_visibility:
|
flutter_keyboard_visibility:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -410,10 +410,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_riverpod
|
name: flutter_riverpod
|
||||||
sha256: "1bd39b04f1bcd217a969589777ca6bd642d116e3e5de65c3e6a8e8bdd8b178ec"
|
sha256: bdba94be666ecb1beeb0f5a748d96cdd6a37215f27e6b48c7673b95cecb800c8
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.4.4"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -423,10 +423,10 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_typeahead
|
name: flutter_typeahead
|
||||||
sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42
|
sha256: b9942bd5b7611a6ec3f0730c477146cffa4cd4b051077983ba67ddfc9e7ee818
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.6.2"
|
version: "4.8.0"
|
||||||
flutter_web_plugins:
|
flutter_web_plugins:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -436,10 +436,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: font_awesome_flutter
|
name: font_awesome_flutter
|
||||||
sha256: "5fb789145cae1f4c3245c58b3f8fb287d055c26323879eab57a7bf0cfd1e45f3"
|
sha256: "52671aea66da73b58d42ec6d0912b727a42248dd9a7c76d6c20f275783c48c08"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.5.0"
|
version: "10.6.0"
|
||||||
gallery_saver:
|
gallery_saver:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -476,34 +476,34 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: geolocator_android
|
name: geolocator_android
|
||||||
sha256: "835ff5b4888a2f8eba128996494faf9c5d422785322a81dc0565b99e0f6c379d"
|
sha256: "93906636752ea4d4e778afa981fdfe7409f545b3147046300df194330044d349"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.2"
|
version: "4.3.1"
|
||||||
geolocator_apple:
|
geolocator_apple:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: geolocator_apple
|
name: geolocator_apple
|
||||||
sha256: "36527c555f4c425f7d8fa8c7c07d67b78e3ff7590d40448051959e1860c1cfb4"
|
sha256: ab90ae811c42ec2f6021e01eca71df00dee6ff1e69d2c2dafd4daeb0b793f73d
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.7"
|
version: "2.3.2"
|
||||||
geolocator_platform_interface:
|
geolocator_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: geolocator_platform_interface
|
name: geolocator_platform_interface
|
||||||
sha256: af4d69231452f9620718588f41acc4cb58312368716bfff2e92e770b46ce6386
|
sha256: b7aca62aa05d7e610c396a53a1936ff87fce2f735d76e93fde9269c341c46a25
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.7"
|
version: "4.1.1"
|
||||||
geolocator_web:
|
geolocator_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: geolocator_web
|
name: geolocator_web
|
||||||
sha256: f68a122da48fcfff68bbc9846bb0b74ef651afe84a1b1f6ec20939de4d6860e1
|
sha256: "59083f7e0871b78299918d92bf930a14377f711d2d1156c558cd5ebae6c20d58"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.6"
|
version: "2.2.0"
|
||||||
geolocator_windows:
|
geolocator_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -604,10 +604,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image
|
name: image
|
||||||
sha256: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf
|
sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.0.17"
|
version: "4.1.3"
|
||||||
image_picker:
|
image_picker:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -620,10 +620,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: image_picker_android
|
name: image_picker_android
|
||||||
sha256: d32a997bcc4ee135aebca8e272b7c517927aa65a74b9c60a81a2764ef1a0462d
|
sha256: "0c7b83bbe2980c8a8e36e974f055e11e51675784e13a4762889feed0f3937ff2"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.7+5"
|
version: "0.8.8+1"
|
||||||
image_picker_for_web:
|
image_picker_for_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -900,18 +900,18 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: permission_handler
|
name: permission_handler
|
||||||
sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81"
|
sha256: bc56bfe9d3f44c3c612d8d393bd9b174eb796d706759f9b495ac254e4294baa5
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.4.3"
|
version: "10.4.5"
|
||||||
permission_handler_android:
|
permission_handler_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_android
|
name: permission_handler_android
|
||||||
sha256: d74e77a5ecd38649905db0a7d05ef16bed42ff263b9efb73ed794317c5764ec3
|
sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.3.4"
|
version: "10.3.6"
|
||||||
permission_handler_apple:
|
permission_handler_apple:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -924,10 +924,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: permission_handler_platform_interface
|
name: permission_handler_platform_interface
|
||||||
sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9"
|
sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.11.3"
|
version: "3.12.0"
|
||||||
permission_handler_windows:
|
permission_handler_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -948,10 +948,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: platform
|
name: platform
|
||||||
sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102
|
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.1.3"
|
||||||
plugin_platform_interface:
|
plugin_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1036,18 +1036,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: riverpod
|
name: riverpod
|
||||||
sha256: a600120d6f213a9922860eea1abc32597436edd5b2c4e73b91410f8c2af67d22
|
sha256: "2af3d127a6e4e34b89b8f1f018086f5ded04b8e538174f0510bba3e4c0d878b1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.0"
|
version: "2.4.4"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac
|
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.2.2"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1068,10 +1068,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_linux
|
name: shared_preferences_linux
|
||||||
sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a
|
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
shared_preferences_platform_interface:
|
shared_preferences_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1092,10 +1092,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: shared_preferences_windows
|
name: shared_preferences_windows
|
||||||
sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f
|
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.1"
|
version: "2.3.2"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -1337,10 +1337,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: win32
|
name: win32
|
||||||
sha256: "9e82a402b7f3d518fb9c02d0e9ae45952df31b9bf34d77baf19da2de03fc2aaa"
|
sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.7"
|
version: "5.0.9"
|
||||||
wkt_parser:
|
wkt_parser:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|||||||
Reference in New Issue
Block a user