pile左右栏
This commit is contained in:
parent
677705bbbf
commit
0e3caec53f
@ -1,18 +1,18 @@
|
||||
# This is a generated file; do not edit or check into version control.
|
||||
device_info_plus=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\device_info_plus-11.1.1\\
|
||||
flutter_webrtc=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\flutter_webrtc-0.9.48+hotfix.1\\
|
||||
device_info_plus=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\device_info_plus-11.1.1\\
|
||||
flutter_webrtc=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\flutter_webrtc-0.9.48+hotfix.1\\
|
||||
libserialport=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\git\\libserialport-d6d27ef7aaf89e4dfa026db0c50dd3053c546710\\
|
||||
open_settings=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\open_settings-2.0.2\\
|
||||
path_provider=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\path_provider-2.1.5\\
|
||||
path_provider_android=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\path_provider_android-2.2.12\\
|
||||
path_provider_foundation=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\path_provider_foundation-2.4.0\\
|
||||
path_provider_linux=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\path_provider_linux-2.2.1\\
|
||||
path_provider_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\path_provider_windows-2.3.0\\
|
||||
permission_handler=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler-11.3.1\\
|
||||
permission_handler_android=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_android-12.0.13\\
|
||||
permission_handler_apple=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_apple-9.4.5\\
|
||||
permission_handler_html=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_html-0.1.3+2\\
|
||||
permission_handler_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\permission_handler_windows-0.2.1\\
|
||||
quick_blue=D:\\ly\\dart\\A\\new\\hy_tamping\\plugins\\quick_blue\\
|
||||
wifi_iot=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_iot-0.3.19+1\\
|
||||
wifi_scan=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.flutter-io.cn\\wifi_scan-0.4.1+1\\
|
||||
open_settings=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\open_settings-2.0.2\\
|
||||
path_provider=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider-2.1.5\\
|
||||
path_provider_android=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_android-2.2.12\\
|
||||
path_provider_foundation=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_foundation-2.4.0\\
|
||||
path_provider_linux=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_linux-2.2.1\\
|
||||
path_provider_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\path_provider_windows-2.3.0\\
|
||||
permission_handler=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler-11.3.1\\
|
||||
permission_handler_android=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_android-12.0.13\\
|
||||
permission_handler_apple=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_apple-9.4.5\\
|
||||
permission_handler_html=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_html-0.1.3+4\\
|
||||
permission_handler_windows=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\permission_handler_windows-0.2.1\\
|
||||
quick_blue=D:\\pile_nav_new\\plugins\\quick_blue\\
|
||||
wifi_iot=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\wifi_iot-0.3.19+1\\
|
||||
wifi_scan=C:\\Users\\Administrator\\AppData\\Local\\Pub\\Cache\\hosted\\pub.dev\\wifi_scan-0.4.1+1\\
|
||||
|
File diff suppressed because one or more lines are too long
BIN
images/hammer.png
Normal file
BIN
images/hammer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
images/hook.png
Normal file
BIN
images/hook.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 38 KiB |
231
images/index.dart
Normal file
231
images/index.dart
Normal file
@ -0,0 +1,231 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../counter_pointer/sight.dart';
|
||||
import '../draws/data_type.dart';
|
||||
import '../draws/scence_map.dart';
|
||||
import '../getx/polyon.dart';
|
||||
import 'controller.dart';
|
||||
import 'direction.dart';
|
||||
import 'polyon.dart';
|
||||
import 'real_data.dart';
|
||||
import 'real_device.dart';
|
||||
|
||||
class HomeView extends GetView<PlumDataController> {
|
||||
const HomeView({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
ScenceMapController scenceMapController = Get.find<ScenceMapController>();
|
||||
PolyonController polyonController = Get.find<PolyonController>();
|
||||
List<Widget> children = [];
|
||||
final size = MediaQuery.of(context).size;
|
||||
return OrientationBuilder(builder: ((context, orientation) {
|
||||
bool isPortrait = Orientation.portrait == orientation ? true : false;
|
||||
double topHeight = isPortrait ? size.height / 6 : 0;
|
||||
if (isPortrait) {
|
||||
children = [const SightGview()];
|
||||
} else {
|
||||
children = [];
|
||||
}
|
||||
// 中间
|
||||
var center = Obx(() {
|
||||
// 桩点生成
|
||||
if (controller.isGenerate.value) {
|
||||
return GestureDetector(
|
||||
onTapDown: (TapDownDetails details) {
|
||||
if (controller.checkValue.value == "checkPile") {
|
||||
controller.centerOffset.value = details.localPosition;
|
||||
double diagonal = scenceMapController.diagonal;
|
||||
double mapWidth = scenceMapController.width;
|
||||
double mapHeight = scenceMapController.height;
|
||||
Offset offset = Offset(
|
||||
mapWidth / 2 - diagonal / 2, mapHeight / 2 - diagonal / 2);
|
||||
Offset sc2xy = scenceMapController
|
||||
.screen2xy0(details.localPosition - offset);
|
||||
controller.centerXY.value = sc2xy;
|
||||
HyRecordItem? checkPoint =
|
||||
scenceMapController.pointInfo(controller.centerXY.value);
|
||||
if (checkPoint != null) {
|
||||
controller.isPileId.value = true;
|
||||
controller.checkName.value = checkPoint.tpId.toString();
|
||||
} else {
|
||||
controller.isPileId.value = false;
|
||||
controller.checkName.value = "未找到";
|
||||
}
|
||||
showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (BuildContext context) {
|
||||
return const GenerateDialog();
|
||||
});
|
||||
}
|
||||
},
|
||||
onScaleStart: (details) {
|
||||
controller.isUp.value = false;
|
||||
if (controller.checkValue.value != "checkPile") {
|
||||
controller.linePoint.value = details.localFocalPoint;
|
||||
}
|
||||
controller.shouldPaint.value = true;
|
||||
},
|
||||
onScaleUpdate: (details) {
|
||||
controller.shouldPaint.value = true;
|
||||
if (controller.checkValue.value != "checkPile") {
|
||||
if (controller.linePoint.value != details.localFocalPoint) {
|
||||
controller.updateLinePoint(details.localFocalPoint);
|
||||
}
|
||||
}
|
||||
},
|
||||
onScaleEnd: (details) {
|
||||
double deg = (atan2(
|
||||
controller.linePoint.value.dy -
|
||||
controller.centerOffset.value.dy,
|
||||
controller.linePoint.value.dx -
|
||||
controller.centerOffset.value.dx) *
|
||||
180 /
|
||||
pi)
|
||||
.roundToDouble();
|
||||
controller.direction.value = deg + 90;
|
||||
controller.angle.value =
|
||||
((controller.direction.value * pi / 180) * 100).round() / 100;
|
||||
controller.isUp.value = true;
|
||||
controller.shouldPaint.value = false;
|
||||
|
||||
},
|
||||
child: Container(
|
||||
clipBehavior: Clip.hardEdge,
|
||||
decoration: BoxDecoration(
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black.withOpacity(0.2),
|
||||
blurRadius: 8,
|
||||
offset: const Offset(0, 4),
|
||||
),
|
||||
],
|
||||
),
|
||||
child: Obx(() {
|
||||
////必须写 因为 需要监听 -- 的值发生变化 刷新
|
||||
controller.linePoint.value;
|
||||
List<Widget> scenceMapViewChildren = [];
|
||||
if (controller.isGenerate.value) {
|
||||
scenceMapViewChildren = [];
|
||||
} else {
|
||||
scenceMapViewChildren = [const SightGview()];
|
||||
}
|
||||
return CustomPaint(
|
||||
foregroundPainter: DrawDirection(controller),
|
||||
child: AbsorbPointer(
|
||||
absorbing: true, //设置CenterLayout 内的GestureDetector 不生效
|
||||
child: ScenceMapView(scenceMapViewChildren),
|
||||
));
|
||||
}),
|
||||
),
|
||||
);
|
||||
// 多边形
|
||||
} else if (polyonController.isRuler.value) {
|
||||
return const PolyonView( ScenceMapView([]));
|
||||
} else {
|
||||
return ScenceMapView(children);
|
||||
}
|
||||
});
|
||||
// 桩点生成时返回按钮
|
||||
var back = Obx(() => Positioned(
|
||||
left: controller.isGenerate.value
|
||||
? controller.centerOffset.value.dx - 25 //宽一半
|
||||
: -50,
|
||||
top: controller.isGenerate.value
|
||||
? controller.centerOffset.value.dy + topHeight - 20 // 20 为高一半
|
||||
: -50,
|
||||
width: 50,
|
||||
height: 40,
|
||||
child: ClipOval(
|
||||
child: ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
padding: EdgeInsets.zero,
|
||||
shape: const CircleBorder(),
|
||||
),
|
||||
child: const Icon(Icons.keyboard_return),
|
||||
onPressed: () {
|
||||
showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (BuildContext context) {
|
||||
return const GenerateDialog();
|
||||
});
|
||||
controller.isDirect.value = false;
|
||||
},
|
||||
),
|
||||
)));
|
||||
// 竖屏
|
||||
var portraitWidget = Column(
|
||||
children: [
|
||||
Expanded(flex: 1, child: RealDataVIew()),
|
||||
Expanded(flex: 5, child: center),
|
||||
],
|
||||
);
|
||||
// 横屏
|
||||
var landscapeWidget = Row(
|
||||
children: [
|
||||
Expanded(flex: 2, child: RealDataVIew()),
|
||||
Expanded(flex: 5, child: center),
|
||||
const Expanded(flex: 2, child: RealDeviceView()),
|
||||
],
|
||||
);
|
||||
// 瞄准器
|
||||
var sightWidegt = Positioned(
|
||||
width: size.width / 9 * 2,
|
||||
height: size.width / 9 * 2,
|
||||
bottom: 0,
|
||||
left: 0,
|
||||
child: Container(
|
||||
decoration: const BoxDecoration(color: Colors.transparent),
|
||||
child: const Card(
|
||||
elevation: 5.0,
|
||||
child: SightView(),
|
||||
)));
|
||||
return Stack(
|
||||
children: [
|
||||
if (isPortrait) portraitWidget else landscapeWidget,
|
||||
back,
|
||||
if (!isPortrait) sightWidegt,
|
||||
],
|
||||
);
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
// 瞄准器
|
||||
class SightGview extends GetView<SightController> {
|
||||
const SightGview({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Size size = MediaQuery.of(context).size;
|
||||
return Obx(() => Positioned(
|
||||
left: controller.sightOffset.value.dx,
|
||||
top: controller.sightOffset.value.dy,
|
||||
width: size.width / 5 * 2,
|
||||
height: size.width / 5 * 2,
|
||||
child: GestureDetector(
|
||||
onScaleStart: ((details) {
|
||||
// 17 这个值不知原因?
|
||||
controller.initSight.value =
|
||||
Offset(0, size.width / 5 * 2 - 17) + details.localFocalPoint;
|
||||
controller.sightOffset.value =
|
||||
details.focalPoint - controller.initSight.value;
|
||||
}),
|
||||
onScaleUpdate: (details) {
|
||||
controller.sightOffset.value =
|
||||
details.focalPoint - controller.initSight.value;
|
||||
},
|
||||
child: Container(
|
||||
decoration: const BoxDecoration(color: Colors.transparent),
|
||||
child: const Card(
|
||||
elevation: 5.0,
|
||||
child: SightView(),
|
||||
)),
|
||||
),
|
||||
));
|
||||
}
|
||||
}
|
BIN
images/mechinacs.png
Normal file
BIN
images/mechinacs.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 144 KiB |
@ -25,9 +25,9 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
const textStyle = TextStyle(fontSize: 16);
|
||||
const textStyle = TextStyle(fontSize: 20);
|
||||
return AppBar(
|
||||
toolbarHeight: 40,
|
||||
toolbarHeight: 50,
|
||||
centerTitle: true, // 标题居中
|
||||
title: Obx(() {
|
||||
// pile_cm
|
||||
@ -83,7 +83,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
},
|
||||
child: Icon(
|
||||
appcontroller.isDarkMode.value ? Icons.dark_mode : Icons.sunny,
|
||||
size: 35,
|
||||
size: 45,
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -132,7 +132,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
image: const AssetImage('images/satellite.png'),
|
||||
// width: 40,
|
||||
color: color,
|
||||
height: 40,
|
||||
height: 50,
|
||||
)
|
||||
],
|
||||
),
|
||||
@ -157,7 +157,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
},
|
||||
child: Icon(
|
||||
Icons.my_location_sharp,
|
||||
size: 35,
|
||||
size: 45,
|
||||
color: aimcontroller.isCardVisible.value
|
||||
? Colors.blue
|
||||
// : const Color.fromARGB(200, 29, 28, 28),
|
||||
@ -178,7 +178,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
},
|
||||
child: Icon(
|
||||
Icons.date_range_rounded,
|
||||
size: 35,
|
||||
size: 45,
|
||||
color: isDataVisible.value
|
||||
? Colors.blue
|
||||
: (appcontroller.isDarkMode.value
|
||||
|
@ -15,6 +15,7 @@ import 'pages/login/my_routes.dart';
|
||||
import 'pages/pass_track/view.dart';
|
||||
|
||||
import 'pages/real/real_controller.dart';
|
||||
import 'pages/dataAndDevice/controller.dart';
|
||||
import 'pages/setting/child_pages/antenna/antenna_setting.dart';
|
||||
import 'pages/setting/child_pages/connect/config/socket_setting.dart';
|
||||
import 'pages/setting/setting_controller.dart';
|
||||
@ -31,7 +32,7 @@ final AppController appcontroller = Get.put(AppController());
|
||||
final GlobalKey<ScaffoldMessengerState> scaffoldMessengerKey =
|
||||
GlobalKey<ScaffoldMessengerState>();
|
||||
// Connect connect = Connect();
|
||||
SocketSetting socket = SocketSetting();
|
||||
SocketSetting socket = SocketSetting();
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); //设置全屏
|
||||
@ -42,6 +43,8 @@ void main() async {
|
||||
Get.put(ScenceMapController());
|
||||
Get.put(AimPointerController());
|
||||
Get.put(RealController());
|
||||
Get.put(RealDataController());
|
||||
Get.put(PlumRealDataController());
|
||||
LoginPrefs loginPrefs = LoginPrefs();
|
||||
String value =
|
||||
await loginPrefs.init(); // await 关键字必须用在异步方法中 await等待异步方法执行完毕 异步方法必须用变量接收
|
||||
@ -92,7 +95,7 @@ class MyHomePage extends StatefulWidget {
|
||||
|
||||
class _MyHomePageState extends State<MyHomePage> {
|
||||
late bool isPortrait;
|
||||
late double appBarHeight = 34.0;
|
||||
late double appBarHeight = 44.0;
|
||||
bool isInitialized = false;
|
||||
@override
|
||||
void initState() {
|
||||
@ -123,7 +126,7 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
}
|
||||
final List<Widget> pages = [
|
||||
// const Real(),
|
||||
PassTrack(),
|
||||
PassTackAndDevice(),
|
||||
const TaskManagePage(),
|
||||
const HistoryRecord(),
|
||||
const SettingPortrait()
|
||||
@ -134,16 +137,15 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
appBar: PreferredSize(
|
||||
preferredSize: Size.fromHeight(appBarHeight),
|
||||
child: CustomAppBar(
|
||||
appBarHeight: 56,
|
||||
appBarHeight: 66,
|
||||
currentIndex: appcontroller.currentIndex,
|
||||
),
|
||||
),
|
||||
body: OrientationBuilder(
|
||||
builder: (context, orientation) {
|
||||
// final size = MediaQuery.of(context).size;
|
||||
appBarHeight = Orientation.portrait == orientation ? 56.0 : 34.0;
|
||||
appBarHeight = Orientation.portrait == orientation ? 66.0 : 44.0;
|
||||
isPortrait = Orientation.portrait == orientation ? true : false;
|
||||
appBarHeight = Orientation.portrait == orientation ? 56.0 : 34.0;
|
||||
return Obx(() {
|
||||
appcontroller.currentIndex.value;
|
||||
if (!isPortrait) {
|
||||
|
@ -15,11 +15,10 @@ final GnssController gnsscontroller = Get.find<GnssController>();
|
||||
// ignore: must_be_immutable
|
||||
class AimPointer extends GetView<AimPointerController> {
|
||||
String gradienter = "0";
|
||||
|
||||
AimPointer({super.key}); //水平仪
|
||||
final Size size;
|
||||
AimPointer({super.key, required this.size}); //水平仪
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Size size = MediaQuery.of(context).size;
|
||||
final mediaQueryData = MediaQueryData.fromView(View.of(context)); //获取当前屏幕信息
|
||||
final orientation = mediaQueryData.orientation; //获得设备方向
|
||||
bool isPortrait = Orientation.portrait == orientation ? true : false;
|
||||
@ -27,17 +26,17 @@ class AimPointer extends GetView<AimPointerController> {
|
||||
|
||||
final deviceType = getDeviceType(context);
|
||||
|
||||
if (orientation == Orientation.landscape) {
|
||||
rectWidth = size.width / 2 - 60;
|
||||
if (deviceType == DeviceType.mobile) {
|
||||
rectWidth = size.height - 130;
|
||||
}
|
||||
} else {
|
||||
rectWidth = size.height / 2;
|
||||
if (deviceType == DeviceType.mobile) {
|
||||
rectWidth = size.width - 5;
|
||||
}
|
||||
}
|
||||
// if (orientation == Orientation.landscape) {
|
||||
// rectWidth = size.width / 2 - 60;
|
||||
// if (deviceType == DeviceType.mobile) {
|
||||
// rectWidth = size.height - 60;
|
||||
// }
|
||||
// } else {
|
||||
// rectWidth = size.height / 2;
|
||||
// if (deviceType == DeviceType.mobile) {
|
||||
// rectWidth = size.width - 5;
|
||||
// }
|
||||
// }
|
||||
bool isDarkMode = Theme.of(context).brightness == Brightness.dark;
|
||||
List<Widget> children = [
|
||||
SizedBox(
|
||||
@ -50,6 +49,7 @@ class AimPointer extends GetView<AimPointerController> {
|
||||
|
||||
borderRadius: BorderRadius.circular(4.0), // 可以根据需要调整圆角半径
|
||||
),
|
||||
|
||||
child: Container(
|
||||
width: rectWidth,
|
||||
height: rectWidth,
|
||||
@ -85,29 +85,17 @@ class AimPointer extends GetView<AimPointerController> {
|
||||
},
|
||||
);
|
||||
})),
|
||||
Positioned(
|
||||
right: 0,
|
||||
top: 0,
|
||||
child: IconButton(
|
||||
icon: const Icon(Icons.close),
|
||||
onPressed: () {
|
||||
// 关闭按钮的回调函数
|
||||
aimcontroller.isCardVisible.value = false;
|
||||
aimcontroller.lastCloseTapTime =
|
||||
DateTime.now().millisecondsSinceEpoch;
|
||||
},
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
top: 30,
|
||||
right: 10,
|
||||
child: TextButton(
|
||||
child: Text(
|
||||
"垂直度:$gradienter°",
|
||||
style: const TextStyle(fontSize: 20),
|
||||
),
|
||||
onPressed: () {},
|
||||
)),
|
||||
|
||||
// Positioned(
|
||||
// top: 30,
|
||||
// right: 10,
|
||||
// child: TextButton(
|
||||
// child: Text(
|
||||
// "垂直度:$gradienter°",
|
||||
// style: const TextStyle(fontSize: 20),
|
||||
// ),
|
||||
// onPressed: () {},
|
||||
// )),
|
||||
Obx(() {
|
||||
var pixel2MeterRatio =
|
||||
aimcontroller.plot.value * 2 / rectWidth;
|
||||
@ -148,7 +136,8 @@ class AimPointer extends GetView<AimPointerController> {
|
||||
aimcontroller.x.value / pixel2MeterRatio,
|
||||
child: Transform(
|
||||
transform: Matrix4.identity()
|
||||
..rotateZ(gnsscontroller.device.rotation.value +
|
||||
..rotateZ(
|
||||
gnsscontroller.device.rotation.value +
|
||||
pi / 2 +
|
||||
mapcontroller.rotation.value),
|
||||
alignment: FractionalOffset.center,
|
||||
@ -331,11 +320,12 @@ class DrawAxis extends CustomPainter {
|
||||
|
||||
// 瞄准器卡片
|
||||
class SightGview extends StatelessWidget {
|
||||
const SightGview({super.key});
|
||||
const SightGview({super.key, required this.size});
|
||||
|
||||
final Size size;
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final Size size = MediaQuery.of(context).size;
|
||||
// final Size size = MediaQuery.of(context).size;
|
||||
final mediaQueryData = MediaQueryData.fromView(View.of(context)); //获取当前屏幕信息
|
||||
final orientation = mediaQueryData.orientation; //获得设备方向
|
||||
double rectWidth = size.width;
|
||||
@ -354,7 +344,9 @@ class SightGview extends StatelessWidget {
|
||||
|
||||
return Obx(() => Visibility(
|
||||
visible: aimcontroller.isCardVisible.value,
|
||||
child: Positioned(
|
||||
child:
|
||||
Stack(children: [
|
||||
Positioned(
|
||||
left: aimcontroller.sightOffset.value.dx,
|
||||
top: aimcontroller.sightOffset.value.dy,
|
||||
width: rectWidth + 15,
|
||||
@ -378,9 +370,24 @@ class SightGview extends StatelessWidget {
|
||||
Card(
|
||||
color: Colors.transparent,
|
||||
elevation: 5.0,
|
||||
child: AimPointer(),
|
||||
child: AimPointer(size: Size(580, 580)),
|
||||
),
|
||||
]))
|
||||
])))));
|
||||
])),
|
||||
|
||||
Positioned(
|
||||
right: 10,
|
||||
top: 5,
|
||||
child: IconButton(
|
||||
icon: const Icon(Icons.close),
|
||||
onPressed: () {
|
||||
// 关闭按钮的回调函数
|
||||
aimcontroller.isCardVisible.value = false;
|
||||
aimcontroller.lastCloseTapTime =
|
||||
DateTime.now().millisecondsSinceEpoch;
|
||||
},
|
||||
),
|
||||
)
|
||||
]))),])
|
||||
));
|
||||
}
|
||||
}
|
||||
|
150
lib/pages/dataAndDevice/controller.dart
Normal file
150
lib/pages/dataAndDevice/controller.dart
Normal file
@ -0,0 +1,150 @@
|
||||
import 'dart:async';
|
||||
import 'dart:core';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:roslibdart/roslibdart.dart';
|
||||
import '../../service/base.dart';
|
||||
|
||||
class PlumRealDataController extends GetxController {
|
||||
var isGenerate = false.obs; //是否生成
|
||||
var angle = 0.0.obs; //方向弧度
|
||||
var isDirect = false.obs; //是否为方向设置
|
||||
var checkValue = "".obs; //checkPile -桩点坐标,checkDirection-方向设置
|
||||
var checkName = "".obs;
|
||||
var centerXY = Offset.zero.obs; //中心点
|
||||
var space = 5.0.obs; //间距 m
|
||||
var genLenth = 0.obs; //半径
|
||||
var isPileId = false.obs;
|
||||
var direction = 0.0.obs; //角度
|
||||
var centerOffset = Offset.zero.obs;
|
||||
var linePoint = Offset.zero.obs;
|
||||
var isUp = false.obs;
|
||||
var plumList = [].obs;
|
||||
var shouldPaint = true.obs;
|
||||
late Service service;
|
||||
late Ros ros;
|
||||
@override
|
||||
void onInit() async {
|
||||
super.onInit();
|
||||
ros = BaseService().getRos();
|
||||
// ros.connect();
|
||||
// service = Service(
|
||||
// name: '/smash_point_list_service',
|
||||
// ros: ros,
|
||||
// type: "nav2_smash_behavior/srv/SmashPointList");
|
||||
// var json = {'data': []};
|
||||
// service.call(json).then((value) {
|
||||
// print('ros$value');
|
||||
// });
|
||||
}
|
||||
|
||||
updateLinePoint(Offset offset) {
|
||||
linePoint.value = offset;
|
||||
update();
|
||||
}
|
||||
|
||||
// 监听 plumList 变量的变化
|
||||
void listenToPlumList() {
|
||||
plumList.listen((list) {
|
||||
var points = [];
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
Offset item = list[i];
|
||||
points.add({"x": item.dx, "y": item.dy, "z": 0});
|
||||
}
|
||||
service
|
||||
.call({"points": points})
|
||||
.then((value) => {print("----$value")})
|
||||
.catchError((e) => {print(e)});
|
||||
}, onError: (err) {
|
||||
// 错误处理
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class RealDataController extends GetxController {
|
||||
final time = DateTime.now().obs;
|
||||
final tid = 100.obs;
|
||||
final name = '桩点名称'.obs;
|
||||
final sid = '10.222'.obs;
|
||||
final times = 10.obs;
|
||||
late final isClick = false.obs;
|
||||
|
||||
late final lineDis = 110.0.obs;
|
||||
late final distance = 460.0.obs;
|
||||
var isHooked = false.obs;
|
||||
late Topic topic;
|
||||
late Ros ros;
|
||||
|
||||
double g = 9.8; // 重力加速度
|
||||
double t = 0; // 时间
|
||||
@override
|
||||
void onInit() async {
|
||||
super.onInit();
|
||||
ros = BaseService().getRos();
|
||||
// ros.connect();
|
||||
// topic = Topic(
|
||||
// ros: ros,
|
||||
// name: '/your_topic',
|
||||
// type: 'std_msgs/String',
|
||||
// );
|
||||
// // 订阅者来接收 ROS 主题的消息
|
||||
// topic.subscribe((message) async {
|
||||
// print('Received message: $message');
|
||||
// });
|
||||
|
||||
// ActionClient action = ActionClient(
|
||||
// ros: ros,
|
||||
// actionName: '/virtual_odom',
|
||||
// serverName: 'virtual_odom_publisher_behavior/action/PublishVirtualOdom',
|
||||
// goalName: "/target_pose",
|
||||
// goalType: 'geometry_msgs/PoseStamped');
|
||||
// await action.init();
|
||||
// action.feedbacker.subscription!.listen((message) {
|
||||
// String g = message['status']['goal_id']['id'];
|
||||
// action.goals[g]!.stream.listen((data) {
|
||||
// // 在这里处理 status 的变化
|
||||
// print('Status changed: ${data['status']}');
|
||||
// });
|
||||
// });
|
||||
// Map message = {
|
||||
// 'target_pose': {
|
||||
// 'header': {'frame_id': 'map'},
|
||||
// 'pose': {
|
||||
// 'position': {'x': 10.0, 'y': 10.0, 'z': 0.0},
|
||||
// 'orientation': {'x': 0.0, 'y': 0.0, 'z': 0.0, 'w': 1.0}
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
|
||||
// action.send(message);
|
||||
|
||||
// 定时器每秒更新时间
|
||||
Timer.periodic(const Duration(milliseconds: 100), (_) {
|
||||
time.value = DateTime.now();
|
||||
if (!isHooked.value && lineDis < 560 && distance >= 460) {
|
||||
lineDis.value += 10; // 每秒增加10
|
||||
} else if (lineDis > 110 && distance <= 460) {
|
||||
isHooked.value = true;
|
||||
distance.value -= 10;
|
||||
lineDis.value -= 10;
|
||||
} else if (distance.value < 460) {
|
||||
isHooked.value = false;
|
||||
t += 1; // 每秒增加1秒
|
||||
distance.value = 0.5 * g * t * t;
|
||||
if (distance.value >= 460) {
|
||||
distance.value = 460;
|
||||
t = 0;
|
||||
}
|
||||
lineDis.value = 110;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() async {
|
||||
super.dispose();
|
||||
await ros.close();
|
||||
}
|
||||
}
|
124
lib/pages/dataAndDevice/real_data.dart
Normal file
124
lib/pages/dataAndDevice/real_data.dart
Normal file
@ -0,0 +1,124 @@
|
||||
import 'dart:math';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
import '../../service/pile/device_type.dart';
|
||||
import '../../service/pile/input.dart';
|
||||
import '../../service/pile/public_widget.dart';
|
||||
import '../aim_point/aimpoint_page.dart';
|
||||
import 'controller.dart';
|
||||
|
||||
class RealDataContainer extends StatelessWidget {
|
||||
final PlumRealDataController controller = Get.put(PlumRealDataController());
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// final size = MediaQuery.of(context).size;
|
||||
return Container(
|
||||
child: Stack(
|
||||
children: [
|
||||
RealDataVIew(),
|
||||
Positioned(
|
||||
bottom: 60, // 根据需要调整位置
|
||||
left: 5, // 根据需要调整位置
|
||||
child: Container(
|
||||
decoration: const BoxDecoration(color: Colors.transparent),
|
||||
child: Stack(children: [
|
||||
Card(
|
||||
color: Colors.transparent,
|
||||
elevation: 0,
|
||||
child: AimPointer(size: Size(250,250)),
|
||||
),
|
||||
]))),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class RealDataVIew extends GetView<RealDataController> {
|
||||
RealDataVIew({super.key});
|
||||
final PlumRealDataController plumDataController =
|
||||
Get.find<PlumRealDataController>();
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
double fontSize = 16;
|
||||
DeviceType deviceType = getDeviceType(context);
|
||||
if (deviceType == DeviceType.mobile) {
|
||||
fontSize = 16;
|
||||
} else {
|
||||
fontSize = 20;
|
||||
}
|
||||
return Container(
|
||||
clipBehavior: Clip.hardEdge,
|
||||
alignment: Alignment.centerLeft,
|
||||
// height: 130,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5),
|
||||
decoration:
|
||||
BoxDecoration(border: Border.all(color: Colors.black, width: 1)),
|
||||
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
// Stack(children: [
|
||||
// Positioned(
|
||||
// width: 20,
|
||||
// height: 20,
|
||||
// child: Card(
|
||||
// color: Colors.transparent,
|
||||
// elevation: 5.0,
|
||||
// child:
|
||||
|
||||
// ),
|
||||
// )
|
||||
// ]),
|
||||
const SizedBox(
|
||||
height: 20,
|
||||
),
|
||||
Wrap(
|
||||
children: [
|
||||
Obx(() => Text(
|
||||
DateFormat('yy-MM-dd HH:mm:ss').format(controller.time.value),
|
||||
style: const TextStyle(fontSize: 20, height: 2),
|
||||
)),
|
||||
],
|
||||
),
|
||||
SingleChildScrollView(
|
||||
child: Theme(
|
||||
data: ThemeData(
|
||||
textTheme: TextTheme(
|
||||
titleLarge: TextStyle(
|
||||
fontSize: fontSize,
|
||||
fontWeight: FontWeight.normal,
|
||||
),
|
||||
)),
|
||||
child: Obx(() => Wrap(
|
||||
children: [
|
||||
// Text(
|
||||
// '工作区域:$txt ',
|
||||
// style: textStyle,
|
||||
// ),
|
||||
// Text(
|
||||
// '工作层级:$txt ',
|
||||
// style: textStyle,
|
||||
// ),
|
||||
Text(
|
||||
'设备编号:${controller.tid.value} ',
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
),
|
||||
Text(
|
||||
'桩点名称:${controller.name.value} ',
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
),
|
||||
Text(
|
||||
'夯沉量:${controller.sid.value} ',
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
),
|
||||
Text(
|
||||
'次:${controller.times.value} ',
|
||||
style: Theme.of(context).textTheme.titleLarge,
|
||||
),
|
||||
],
|
||||
))),
|
||||
),
|
||||
]),
|
||||
);
|
||||
}
|
||||
}
|
126
lib/pages/dataAndDevice/real_device.dart
Normal file
126
lib/pages/dataAndDevice/real_device.dart
Normal file
@ -0,0 +1,126 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../service/pile/device_type.dart';
|
||||
import 'controller.dart';
|
||||
|
||||
class RealDeviceView extends GetView<RealDataController> {
|
||||
const RealDeviceView({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
DeviceType deviceType = getDeviceType(context);
|
||||
final size = MediaQuery.of(context).size;
|
||||
double imageW = size.width / 4 - 20;
|
||||
double imageH = size.height - 40;
|
||||
double rad = 0.10625;
|
||||
// double distance = 0;
|
||||
double hammerDis = 50; //
|
||||
|
||||
double hookDis = 30;
|
||||
|
||||
bool isMobile = deviceType != DeviceType.mobile ? false : true;
|
||||
double lineTop = deviceType != DeviceType.mobile
|
||||
? (rad * size.height).floorToDouble() - 45
|
||||
: (rad / 2 * size.height).floorToDouble() - 45;
|
||||
return Obx(() {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.black, width: 1),
|
||||
),
|
||||
child: Stack(
|
||||
children: [
|
||||
// 车
|
||||
Positioned(
|
||||
bottom: 45,
|
||||
left: 0,
|
||||
width: imageW,
|
||||
height: imageH,
|
||||
child: const Image(
|
||||
image: AssetImage(
|
||||
'images/mechinacs.png',
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// 线
|
||||
Positioned(
|
||||
top: lineTop,
|
||||
left: isMobile ? 35 : 32,
|
||||
width: 3,
|
||||
height: controller.lineDis.value,
|
||||
child: CustomPaint(
|
||||
painter: LinePainter(),
|
||||
),
|
||||
),
|
||||
// 锤
|
||||
Positioned(
|
||||
left: isMobile ? 10 : 8,
|
||||
top: lineTop + 110 + controller.distance.value,
|
||||
width: 50,
|
||||
height: hammerDis,
|
||||
child: const Image(image: AssetImage('images/hammer.png')),
|
||||
),
|
||||
// 钩
|
||||
Positioned(
|
||||
top: lineTop + controller.lineDis.value,
|
||||
left: isMobile ? 20 : 18,
|
||||
width: 30,
|
||||
height: hookDis,
|
||||
child: const Image(
|
||||
image: AssetImage('images/hook.png'),
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
bottom: 20,
|
||||
left: 35,
|
||||
child: ElevatedButton(
|
||||
style: ButtonStyle(
|
||||
fixedSize: MaterialStateProperty.all(Size(200, 70)),
|
||||
|
||||
backgroundColor: MaterialStateProperty.all( const Color.fromARGB(255, 226, 220, 220))),
|
||||
|
||||
child: Text(
|
||||
controller.isClick.value ? ' 暂停 ' : ' 开始 ',
|
||||
style: TextStyle(fontSize: 28,
|
||||
color:
|
||||
controller.isClick.value ? Colors.red : Colors.green),
|
||||
),
|
||||
onPressed: () => {
|
||||
controller.isClick.value = !controller.isClick.value,
|
||||
},
|
||||
),
|
||||
)
|
||||
// Positioned(
|
||||
// bottom: 40,
|
||||
// right: 30,
|
||||
// child: ElevatedButton(
|
||||
// child:
|
||||
// const Text(" 暂停 ", style: TextStyle(color: Colors.red)),
|
||||
// onPressed: () => null,
|
||||
// ),
|
||||
// )
|
||||
],
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class LinePainter extends CustomPainter {
|
||||
@override
|
||||
void paint(Canvas canvas, Size size) {
|
||||
final paint = Paint()
|
||||
..color = Colors.black
|
||||
..strokeWidth = 3;
|
||||
|
||||
// 绘制一条从顶部到底部的直线
|
||||
canvas.drawLine(Offset(0, 0), Offset(0, size.height), paint);
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRepaint(covariant CustomPainter oldDelegate) {
|
||||
return false;
|
||||
}
|
||||
}
|
@ -11,20 +11,34 @@ import 'package:scence_map/controllers/controller.dart';
|
||||
import 'package:scence_map/record_entity.dart';
|
||||
import 'package:scence_map/scence_map.dart';
|
||||
import '../aim_point/aimpoint_controller.dart';
|
||||
import '../dataAndDevice/real_data.dart';
|
||||
import '../dataAndDevice/real_device.dart';
|
||||
import '../real/real_data_card.dart';
|
||||
|
||||
import "controller.dart";
|
||||
|
||||
ScenceMapController mapcontroller = Get.put(ScenceMapController());
|
||||
|
||||
// class PassTrack extends StatefulWidget {
|
||||
// final String date;
|
||||
// final controller;
|
||||
|
||||
// const PassTrack({super.key, required this.date, this.controller});
|
||||
|
||||
// @override
|
||||
// State<PassTrack> createState() => _PasstrackState();
|
||||
// }
|
||||
class PassTackAndDevice extends StatelessWidget {
|
||||
final RecordEntity? currentPoint;
|
||||
PassTackAndDevice({this.currentPoint});
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Row(
|
||||
children: [
|
||||
Expanded(flex: 2, child: RealDataContainer()),
|
||||
Expanded(
|
||||
flex: 5,
|
||||
child: PassTrack(currentPoint: currentPoint),
|
||||
),
|
||||
Expanded(
|
||||
flex: 2,
|
||||
child: RealDeviceView(),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ignore: must_be_immutable
|
||||
class PassTrack extends GetView<PassTrackController> {
|
||||
@ -62,7 +76,9 @@ class PassTrack extends GetView<PassTrackController> {
|
||||
controller,
|
||||
)
|
||||
: null;
|
||||
|
||||
return OrientationBuilder(builder: (context, orientation) {
|
||||
final size = MediaQuery.of(context).size;
|
||||
return Stack(
|
||||
children: [
|
||||
ScenceMapView(
|
||||
@ -79,8 +95,9 @@ class PassTrack extends GetView<PassTrackController> {
|
||||
},
|
||||
children: const [],
|
||||
),
|
||||
const SightGview(),
|
||||
SightGview(size:size),
|
||||
const RealDataShow(),
|
||||
|
||||
],
|
||||
);
|
||||
});
|
||||
|
@ -7,6 +7,7 @@ import 'package:cpnav/pages/setting/setting_controller.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:roslibdart/roslibdart.dart';
|
||||
|
||||
import '../main.dart';
|
||||
import 'user/loginprefs.dart';
|
||||
@ -138,6 +139,11 @@ class BaseService {
|
||||
log("refreshToken error: $e");
|
||||
}
|
||||
}
|
||||
String rosUrl ="ws://192.168.1.90:9090";
|
||||
getRos(){
|
||||
Ros ros = Ros(url: rosUrl);
|
||||
return ros;
|
||||
}
|
||||
}
|
||||
|
||||
class GetServices {
|
||||
|
@ -6,7 +6,7 @@ packages:
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
async:
|
||||
@ -14,7 +14,7 @@ packages:
|
||||
description:
|
||||
name: async
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.11.0"
|
||||
bluez:
|
||||
@ -22,7 +22,7 @@ packages:
|
||||
description:
|
||||
name: bluez
|
||||
sha256: "203a1924e818a9dd74af2b2c7a8f375ab8e5edf0e486bba8f90a0d8a17ed9fce"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.2"
|
||||
boolean_selector:
|
||||
@ -30,7 +30,7 @@ packages:
|
||||
description:
|
||||
name: boolean_selector
|
||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
characters:
|
||||
@ -38,7 +38,7 @@ packages:
|
||||
description:
|
||||
name: characters
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
clock:
|
||||
@ -46,7 +46,7 @@ packages:
|
||||
description:
|
||||
name: clock
|
||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
collection:
|
||||
@ -54,7 +54,7 @@ packages:
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
convert:
|
||||
@ -62,7 +62,7 @@ packages:
|
||||
description:
|
||||
name: convert
|
||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
cupertino_icons:
|
||||
@ -70,7 +70,7 @@ packages:
|
||||
description:
|
||||
name: cupertino_icons
|
||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
dbus:
|
||||
@ -78,7 +78,7 @@ packages:
|
||||
description:
|
||||
name: dbus
|
||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.10"
|
||||
fake_async:
|
||||
@ -86,7 +86,7 @@ packages:
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
ffi:
|
||||
@ -94,7 +94,7 @@ packages:
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
flutter:
|
||||
@ -107,7 +107,7 @@ packages:
|
||||
description:
|
||||
name: flutter_lints
|
||||
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.3"
|
||||
flutter_test:
|
||||
@ -120,7 +120,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.5"
|
||||
leak_tracker_flutter_testing:
|
||||
@ -128,7 +128,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
leak_tracker_testing:
|
||||
@ -136,7 +136,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
lints:
|
||||
@ -144,7 +144,7 @@ packages:
|
||||
description:
|
||||
name: lints
|
||||
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
logging:
|
||||
@ -152,7 +152,7 @@ packages:
|
||||
description:
|
||||
name: logging
|
||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
matcher:
|
||||
@ -160,7 +160,7 @@ packages:
|
||||
description:
|
||||
name: matcher
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16+1"
|
||||
material_color_utilities:
|
||||
@ -168,7 +168,7 @@ packages:
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.1"
|
||||
meta:
|
||||
@ -176,7 +176,7 @@ packages:
|
||||
description:
|
||||
name: meta
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
path:
|
||||
@ -184,7 +184,7 @@ packages:
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
petitparser:
|
||||
@ -192,7 +192,7 @@ packages:
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
plugin_platform_interface:
|
||||
@ -200,7 +200,7 @@ packages:
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
quick_blue:
|
||||
@ -220,7 +220,7 @@ packages:
|
||||
description:
|
||||
name: source_span
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
stack_trace:
|
||||
@ -228,7 +228,7 @@ packages:
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
stream_channel:
|
||||
@ -236,7 +236,7 @@ packages:
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
string_scanner:
|
||||
@ -244,7 +244,7 @@ packages:
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
term_glyph:
|
||||
@ -252,7 +252,7 @@ packages:
|
||||
description:
|
||||
name: term_glyph
|
||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
test_api:
|
||||
@ -260,7 +260,7 @@ packages:
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.2"
|
||||
typed_data:
|
||||
@ -268,7 +268,7 @@ packages:
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
vector_math:
|
||||
@ -276,23 +276,23 @@ packages:
|
||||
description:
|
||||
name: vector_math
|
||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
vm_service:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.5"
|
||||
version: "14.2.4"
|
||||
xml:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
sdks:
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 887a9eeaf57b8c757df93ed09cb2ce65999057ea
|
||||
Subproject commit 9b1ec3ea2d0ee1e10f6ad2ee32482092972f5cfd
|
198
pubspec.lock
198
pubspec.lock
@ -6,7 +6,7 @@ packages:
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
async:
|
||||
@ -14,7 +14,7 @@ packages:
|
||||
description:
|
||||
name: async
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.11.0"
|
||||
bluez:
|
||||
@ -22,7 +22,7 @@ packages:
|
||||
description:
|
||||
name: bluez
|
||||
sha256: "203a1924e818a9dd74af2b2c7a8f375ab8e5edf0e486bba8f90a0d8a17ed9fce"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.2"
|
||||
boolean_selector:
|
||||
@ -30,23 +30,23 @@ packages:
|
||||
description:
|
||||
name: boolean_selector
|
||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
bottom_picker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: bottom_picker
|
||||
sha256: "7c690407c6c489bc7c556858c3f1b804aac73c3a128559f328cc829ba12983ad"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: "5d52cf94cfe41e3cc448101552f9b2e9faa810e3609e18432280431fb7dd676a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.8.0"
|
||||
version: "2.9.0"
|
||||
calendar_date_picker2:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: calendar_date_picker2
|
||||
sha256: "986955aea43081c8cf70fe01735ccdfe9a7041218b2be53ed92d5d4e639e8a1a"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.7"
|
||||
characters:
|
||||
@ -54,7 +54,7 @@ packages:
|
||||
description:
|
||||
name: characters
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
clock:
|
||||
@ -62,7 +62,7 @@ packages:
|
||||
description:
|
||||
name: clock
|
||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
collection:
|
||||
@ -70,7 +70,7 @@ packages:
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
convert:
|
||||
@ -78,7 +78,7 @@ packages:
|
||||
description:
|
||||
name: convert
|
||||
sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
crypto:
|
||||
@ -86,7 +86,7 @@ packages:
|
||||
description:
|
||||
name: crypto
|
||||
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.6"
|
||||
cupertino_icons:
|
||||
@ -94,7 +94,7 @@ packages:
|
||||
description:
|
||||
name: cupertino_icons
|
||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
dart_webrtc:
|
||||
@ -102,7 +102,7 @@ packages:
|
||||
description:
|
||||
name: dart_webrtc
|
||||
sha256: c664ad88d5646735753add421ee2118486c100febef5e92b7f59cdbabf6a51f6
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.9"
|
||||
data_table_2:
|
||||
@ -110,7 +110,7 @@ packages:
|
||||
description:
|
||||
name: data_table_2
|
||||
sha256: f02ec9b24f44420816a87370ff4f4e533e15b274f6267e4c9a88a585ad1a0473
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.15"
|
||||
dbus:
|
||||
@ -118,7 +118,7 @@ packages:
|
||||
description:
|
||||
name: dbus
|
||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.10"
|
||||
device_info_plus:
|
||||
@ -126,7 +126,7 @@ packages:
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: f545ffbadee826f26f2e1a0f0cbd667ae9a6011cc0f77c0f8f00a969655e6e95
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.1.1"
|
||||
device_info_plus_platform_interface:
|
||||
@ -134,7 +134,7 @@ packages:
|
||||
description:
|
||||
name: device_info_plus_platform_interface
|
||||
sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
dylib:
|
||||
@ -142,7 +142,7 @@ packages:
|
||||
description:
|
||||
name: dylib
|
||||
sha256: bf609b3eb6492a3309b3d1dbe8f83a4031de5535dd7686be33487051cc760bb0
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.3"
|
||||
equatable:
|
||||
@ -150,7 +150,7 @@ packages:
|
||||
description:
|
||||
name: equatable
|
||||
sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.5"
|
||||
fake_async:
|
||||
@ -158,7 +158,7 @@ packages:
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
ffi:
|
||||
@ -166,7 +166,7 @@ packages:
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
file:
|
||||
@ -174,7 +174,7 @@ packages:
|
||||
description:
|
||||
name: file
|
||||
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.1"
|
||||
fl_chart:
|
||||
@ -182,7 +182,7 @@ packages:
|
||||
description:
|
||||
name: fl_chart
|
||||
sha256: "94307bef3a324a0d329d3ab77b2f0c6e5ed739185ffc029ed28c0f9b019ea7ef"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.69.0"
|
||||
flutter:
|
||||
@ -195,7 +195,7 @@ packages:
|
||||
description:
|
||||
name: flutter_lints
|
||||
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
flutter_localizations:
|
||||
@ -207,10 +207,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_svg
|
||||
sha256: de82e6bf958cec7190fbc1c5298282c851228e35ae2b14e2b103e7f777818c64
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: "578bd8c508144fdaffd4f77b8ef2d8c523602275cd697cc3db284dbd762ef4ce"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.13"
|
||||
version: "2.0.14"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@ -226,7 +226,7 @@ packages:
|
||||
description:
|
||||
name: flutter_webrtc
|
||||
sha256: "2f17fb96e0c9c6ff75f6b1c36d94755461fc7f36a5c28386f5ee5a18b98688c8"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.48+hotfix.1"
|
||||
get:
|
||||
@ -234,7 +234,7 @@ packages:
|
||||
description:
|
||||
name: get
|
||||
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.6.6"
|
||||
get_storage:
|
||||
@ -242,7 +242,7 @@ packages:
|
||||
description:
|
||||
name: get_storage
|
||||
sha256: "39db1fffe779d0c22b3a744376e86febe4ade43bf65e06eab5af707dc84185a2"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
gnss:
|
||||
@ -259,7 +259,7 @@ packages:
|
||||
description:
|
||||
name: google_fonts
|
||||
sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.1"
|
||||
http:
|
||||
@ -267,7 +267,7 @@ packages:
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
http_parser:
|
||||
@ -275,7 +275,7 @@ packages:
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
intl:
|
||||
@ -283,7 +283,7 @@ packages:
|
||||
description:
|
||||
name: intl
|
||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.19.0"
|
||||
js:
|
||||
@ -291,7 +291,7 @@ packages:
|
||||
description:
|
||||
name: js
|
||||
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.1"
|
||||
leak_tracker:
|
||||
@ -299,7 +299,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.5"
|
||||
leak_tracker_flutter_testing:
|
||||
@ -307,7 +307,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
leak_tracker_testing:
|
||||
@ -315,7 +315,7 @@ packages:
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
libserialport:
|
||||
@ -332,7 +332,7 @@ packages:
|
||||
description:
|
||||
name: lints
|
||||
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
logging:
|
||||
@ -340,7 +340,7 @@ packages:
|
||||
description:
|
||||
name: logging
|
||||
sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
matcher:
|
||||
@ -348,7 +348,7 @@ packages:
|
||||
description:
|
||||
name: matcher
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16+1"
|
||||
material_color_utilities:
|
||||
@ -356,7 +356,7 @@ packages:
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.1"
|
||||
meta:
|
||||
@ -364,7 +364,7 @@ packages:
|
||||
description:
|
||||
name: meta
|
||||
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.15.0"
|
||||
open_settings:
|
||||
@ -372,7 +372,7 @@ packages:
|
||||
description:
|
||||
name: open_settings
|
||||
sha256: ceb716dc476352aecb939805b6fa6a593168a5ed1abfe3caa022b6b1715e94ae
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
path:
|
||||
@ -380,7 +380,7 @@ packages:
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
path_parsing:
|
||||
@ -388,7 +388,7 @@ packages:
|
||||
description:
|
||||
name: path_parsing
|
||||
sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
path_provider:
|
||||
@ -396,7 +396,7 @@ packages:
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
path_provider_android:
|
||||
@ -404,7 +404,7 @@ packages:
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: c464428172cb986b758c6d1724c603097febb8fb855aa265aeecc9280c294d4a
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.12"
|
||||
path_provider_foundation:
|
||||
@ -412,7 +412,7 @@ packages:
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
path_provider_linux:
|
||||
@ -420,7 +420,7 @@ packages:
|
||||
description:
|
||||
name: path_provider_linux
|
||||
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.1"
|
||||
path_provider_platform_interface:
|
||||
@ -428,7 +428,7 @@ packages:
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
path_provider_windows:
|
||||
@ -436,7 +436,7 @@ packages:
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
permission_handler:
|
||||
@ -444,7 +444,7 @@ packages:
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.3.1"
|
||||
permission_handler_android:
|
||||
@ -452,7 +452,7 @@ packages:
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: "71bbecfee799e65aff7c744761a57e817e73b738fedf62ab7afd5593da21f9f1"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.0.13"
|
||||
permission_handler_apple:
|
||||
@ -460,23 +460,23 @@ packages:
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.5"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_html
|
||||
sha256: af26edbbb1f2674af65a8f4b56e1a6f526156bc273d0e65dd8075fab51c78851
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: "6b9cb54b7135073841a35513fba39e598b421702d5f4d92319992fd6eb5532a9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.3+2"
|
||||
version: "0.1.3+4"
|
||||
permission_handler_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_platform_interface
|
||||
sha256: e9c8eadee926c4532d0305dff94b85bf961f16759c3af791486613152af4b4f9
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.3"
|
||||
permission_handler_windows:
|
||||
@ -484,7 +484,7 @@ packages:
|
||||
description:
|
||||
name: permission_handler_windows
|
||||
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1"
|
||||
petitparser:
|
||||
@ -492,7 +492,7 @@ packages:
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
platform:
|
||||
@ -500,7 +500,7 @@ packages:
|
||||
description:
|
||||
name: platform
|
||||
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.6"
|
||||
platform_detect:
|
||||
@ -508,7 +508,7 @@ packages:
|
||||
description:
|
||||
name: platform_detect
|
||||
sha256: a62f99417fc4fa2d099ce0ccdbb1bd3977920f2a64292c326271f049d4bc3a4f
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
plugin_platform_interface:
|
||||
@ -516,7 +516,7 @@ packages:
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
pub_semver:
|
||||
@ -524,7 +524,7 @@ packages:
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
quick_blue:
|
||||
@ -539,7 +539,7 @@ packages:
|
||||
description:
|
||||
name: roslibdart
|
||||
sha256: "7473a39947f3f5ee32b032f8bab5285a465449e5cd234ae486e5ea11bd6c9e3b"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.1-dev+4"
|
||||
scence_map:
|
||||
@ -553,10 +553,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: searchfield
|
||||
sha256: "837721576ca1de1ce40c9841760e40cd7452d3068ea2a22a7b25d06133a7d989"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: "6b657ee0cf943fc53bdf3cc68459231bdaba9b25ebac52a335f35079a68f2a7c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.7"
|
||||
version: "1.1.8"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
@ -567,7 +567,7 @@ packages:
|
||||
description:
|
||||
name: source_span
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
stack_trace:
|
||||
@ -575,7 +575,7 @@ packages:
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
stream_channel:
|
||||
@ -583,7 +583,7 @@ packages:
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
string_scanner:
|
||||
@ -591,7 +591,7 @@ packages:
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
syncfusion_flutter_core:
|
||||
@ -599,7 +599,7 @@ packages:
|
||||
description:
|
||||
name: syncfusion_flutter_core
|
||||
sha256: "6e67726b85812afc7105725a23620b876ab7f6b04b8410e211330ffb8c2cdbe8"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "26.2.14"
|
||||
syncfusion_flutter_sliders:
|
||||
@ -607,7 +607,7 @@ packages:
|
||||
description:
|
||||
name: syncfusion_flutter_sliders
|
||||
sha256: dca62b54b6b4f99efa1c34abfc54ce83854d7628e78118a1941a2f30d33ea4d5
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "26.2.14"
|
||||
synchronized:
|
||||
@ -615,7 +615,7 @@ packages:
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.0+3"
|
||||
term_glyph:
|
||||
@ -623,7 +623,7 @@ packages:
|
||||
description:
|
||||
name: term_glyph
|
||||
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
test_api:
|
||||
@ -631,7 +631,7 @@ packages:
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.2"
|
||||
typed_data:
|
||||
@ -639,7 +639,7 @@ packages:
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
vector_graphics:
|
||||
@ -647,7 +647,7 @@ packages:
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: "773c9522d66d523e1c7b25dfb95cc91c26a1e17b107039cfe147285e92de7878"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.14"
|
||||
vector_graphics_codec:
|
||||
@ -655,39 +655,39 @@ packages:
|
||||
description:
|
||||
name: vector_graphics_codec
|
||||
sha256: "2430b973a4ca3c4dbc9999b62b8c719a160100dcbae5c819bae0cacce32c9cdb"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.12"
|
||||
vector_graphics_compiler:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_compiler
|
||||
sha256: "26d520739b7c6b5d2a2b3274427874a8390831fd4cd5bb8cfbd7d913477d3a2e"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: ab9ff38fc771e9ee1139320adbe3d18a60327370c218c60752068ebee4b49ab1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.14"
|
||||
version: "1.1.15"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_math
|
||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
vm_service:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.2.5"
|
||||
version: "14.2.4"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
web_socket_channel:
|
||||
@ -695,7 +695,7 @@ packages:
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
webrtc_interface:
|
||||
@ -703,7 +703,7 @@ packages:
|
||||
description:
|
||||
name: webrtc_interface
|
||||
sha256: abec3ab7956bd5ac539cf34a42fa0c82ea26675847c0966bb85160400eea9388
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
wifi_iot:
|
||||
@ -711,7 +711,7 @@ packages:
|
||||
description:
|
||||
name: wifi_iot
|
||||
sha256: "4a3301f71663a908bb50ffe6d9dc9e8b8383fab48368accf978409bde96e9aca"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.19+1"
|
||||
wifi_scan:
|
||||
@ -719,7 +719,7 @@ packages:
|
||||
description:
|
||||
name: wifi_scan
|
||||
sha256: "9a9df688d3e71c39edcd861e6d50beb63815d5505d3884867d75f93e49d66363"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.1+1"
|
||||
win32:
|
||||
@ -727,7 +727,7 @@ packages:
|
||||
description:
|
||||
name: win32
|
||||
sha256: "84ba388638ed7a8cb3445a320c8273136ab2631cd5f2c57888335504ddab1bc2"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.8.0"
|
||||
win32_registry:
|
||||
@ -735,7 +735,7 @@ packages:
|
||||
description:
|
||||
name: win32_registry
|
||||
sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.5"
|
||||
xdg_directories:
|
||||
@ -743,7 +743,7 @@ packages:
|
||||
description:
|
||||
name: xdg_directories
|
||||
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
xml:
|
||||
@ -751,7 +751,7 @@ packages:
|
||||
description:
|
||||
name: xml
|
||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
||||
url: "https://pub.flutter-io.cn"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
sdks:
|
||||
|
@ -94,6 +94,9 @@ flutter:
|
||||
- images/navi_pointer.png
|
||||
- images/satellite.png
|
||||
- images/pilerCar.png
|
||||
- images/hammer.png
|
||||
- images/hook.png
|
||||
- images/mechinacs.png
|
||||
|
||||
# An image asset can refer to one or more resolution-specific "variants", see
|
||||
# https://flutter.dev/assets-and-images/#resolution-aware
|
||||
|
Loading…
Reference in New Issue
Block a user