From f50576936e6bfb5870748c09b8ca644e116a8a62 Mon Sep 17 00:00:00 2001 From: Golek Date: Tue, 6 Dec 2022 16:39:25 +0700 Subject: [PATCH] feat: reactive input file forms library (reactive form) --- .../example/lib/stories.dart | 10 + .../Flutter/GeneratedPluginRegistrant.swift | 2 + .../component_library/example/pubspec.lock | 217 +++++++++- .../lib/component_library.dart | 3 +- .../lib/src/_dashed_rect.dart | 120 ++++++ .../component_library/lib/src/input_file.dart | 390 ++++++++++++++++++ packages/component_library/pubspec.lock | 184 ++++++++- packages/component_library/pubspec.yaml | 3 + packages/features/landing_menu/pubspec.lock | 184 ++++++++- .../features/subscription_menu/pubspec.lock | 184 ++++++++- packages/form_fields/pubspec.lock | 184 ++++++++- pubspec.lock | 170 +++++++- 12 files changed, 1640 insertions(+), 11 deletions(-) create mode 100644 packages/component_library/lib/src/_dashed_rect.dart create mode 100644 packages/component_library/lib/src/input_file.dart diff --git a/packages/component_library/example/lib/stories.dart b/packages/component_library/example/lib/stories.dart index 11b2d79..8116ac8 100644 --- a/packages/component_library/example/lib/stories.dart +++ b/packages/component_library/example/lib/stories.dart @@ -52,6 +52,16 @@ List getStories(GolekThemeData theme) { ), ), ), + Story( + name: 'Plain Input File', + section: 'Form Input', + builder: (_, k) => InputFile( + allowMultiple: k.boolean(label: 'allowMultiple', initial: false), + onChange: (files) {}, + files: [], + inputLabel: '', + ), + ), Story.simple( name: 'Simple Expanded Elevated Button', section: 'Buttons', diff --git a/packages/component_library/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/component_library/example/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..0d56f51 100644 --- a/packages/component_library/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/packages/component_library/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import path_provider_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) } diff --git a/packages/component_library/example/pubspec.lock b/packages/component_library/example/pubspec.lock index 8ea0544..e8160d1 100644 --- a/packages/component_library/example/pubspec.lock +++ b/packages/component_library/example/pubspec.lock @@ -50,6 +50,20 @@ packages: relative: true source: path version: "0.0.0" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" device_frame: dependency: transitive description: @@ -57,6 +71,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.6.1" + extended_image: + dependency: transitive + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" fake_async: dependency: transitive description: @@ -64,6 +92,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" flutter: dependency: "direct main" description: flutter @@ -81,6 +130,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: transitive description: @@ -93,6 +149,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" freezed_annotation: dependency: transitive description: @@ -100,6 +161,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.15.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.2" + image_picker: + dependency: transitive + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: transitive description: @@ -107,6 +224,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.17.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" json_annotation: dependency: transitive description: @@ -170,6 +294,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -177,6 +350,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" provider: dependency: transitive description: @@ -245,6 +439,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.4.12" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" vector_math: dependency: transitive description: @@ -252,6 +453,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.2" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -261,4 +476,4 @@ packages: version: "6.1.0" sdks: dart: ">=2.18.0 <3.0.0" - flutter: ">=2.11.0-0.1.pre" + flutter: ">=3.3.0" diff --git a/packages/component_library/lib/component_library.dart b/packages/component_library/lib/component_library.dart index 292a701..dd77b46 100644 --- a/packages/component_library/lib/component_library.dart +++ b/packages/component_library/lib/component_library.dart @@ -5,5 +5,6 @@ export 'src/theme/spacing.dart'; export 'src/theme/golek_theme.dart'; export 'src/theme/golek_theme_data.dart'; export 'src/input_field.dart'; +export 'src/input_file.dart'; export 'src/error_message_builder.dart'; -export 'src/favorite_icon_button.dart'; \ No newline at end of file +export 'src/favorite_icon_button.dart'; diff --git a/packages/component_library/lib/src/_dashed_rect.dart b/packages/component_library/lib/src/_dashed_rect.dart new file mode 100644 index 0000000..3681855 --- /dev/null +++ b/packages/component_library/lib/src/_dashed_rect.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'dart:math' as math; + +class DashedRect extends StatelessWidget { + final Color color; + final double strokeWidth; + final double gap; + final Widget child; + + const DashedRect({ + Key? key, + this.color = Colors.black, + this.strokeWidth = 1.0, + this.gap = 5.0, + required this.child, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.all(strokeWidth / 2), + child: CustomPaint( + painter: DashRectPainter( + color: color, + strokeWidth: strokeWidth, + gap: gap, + ), + child: child, + ), + ); + } +} + +class DashRectPainter extends CustomPainter { + double strokeWidth; + Color color; + double gap; + + DashRectPainter( + {this.strokeWidth = 5.0, this.color = Colors.red, this.gap = 5.0}); + + @override + void paint(Canvas canvas, Size size) { + Paint dashedPaint = Paint() + ..color = color + ..strokeWidth = strokeWidth + ..style = PaintingStyle.stroke; + + double x = size.width; + double y = size.height; + + Path _topPath = getDashedPath( + a: const math.Point(0, 0), + b: math.Point(x, 0), + gap: gap, + ); + + Path _rightPath = getDashedPath( + a: math.Point(x, 0), + b: math.Point(x, y), + gap: gap, + ); + + Path _bottomPath = getDashedPath( + a: math.Point(0, y), + b: math.Point(x, y), + gap: gap, + ); + + Path _leftPath = getDashedPath( + a: const math.Point(0, 0), + b: math.Point(0.001, y), + gap: gap, + ); + + canvas.drawPath(_topPath, dashedPaint); + canvas.drawPath(_rightPath, dashedPaint); + canvas.drawPath(_bottomPath, dashedPaint); + canvas.drawPath(_leftPath, dashedPaint); + } + + Path getDashedPath({ + required math.Point a, + required math.Point b, + required gap, + }) { + Size size = Size(b.x - a.x, b.y - a.y); + Path path = Path(); + path.moveTo(a.x, a.y); + bool shouldDraw = true; + math.Point currentPoint = math.Point(a.x, a.y); + + num radians = math.atan(size.height / size.width); + + num dx = math.cos(radians) * gap < 0 + ? math.cos(radians) * gap * -1 + : math.cos(radians) * gap; + + num dy = math.sin(radians) * gap < 0 + ? math.sin(radians) * gap * -1 + : math.sin(radians) * gap; + + while (currentPoint.x <= b.x && currentPoint.y <= b.y) { + shouldDraw + ? path.lineTo(currentPoint.x.toDouble(), currentPoint.y.toDouble()) + : path.moveTo(currentPoint.x.toDouble(), currentPoint.y.toDouble()); + shouldDraw = !shouldDraw; + currentPoint = math.Point( + currentPoint.x + dx, + currentPoint.y + dy, + ); + } + return path; + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) { + return true; + } +} diff --git a/packages/component_library/lib/src/input_file.dart b/packages/component_library/lib/src/input_file.dart new file mode 100644 index 0000000..3c92276 --- /dev/null +++ b/packages/component_library/lib/src/input_file.dart @@ -0,0 +1,390 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:component_library/component_library.dart'; +import 'package:extended_image/extended_image.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:image_picker/image_picker.dart'; + +import '_dashed_rect.dart'; + +class InputFile extends StatefulWidget { + const InputFile({ + Key? key, + this.files = const [], + required this.onChange, + this.allowMultiple = false, + this.allowedExtensions = const ['jpg', 'jpeg', 'png', 'gif'], + required this.inputLabel, + this.isError = false, + this.messageError, + }) : super(key: key); + + final List files; + final void Function(List files) onChange; + final bool? allowMultiple; + final List? allowedExtensions; + final String inputLabel; + final bool? isError; + final String? messageError; + + @override + State createState() => _InputFileState(); +} + +class _InputFileState extends State { + List files = []; + StreamController> controller = StreamController(); + late Stream> stream; + + void addFileToSink(List addedFile) { + controller.sink.add(files); + files = addedFile; + } + + void removeFile(File file) { + final filtered = files.skipWhile((f) => f.hashCode == file.hashCode); + controller.sink.add(filtered.toList()); + files = filtered.toList(); + } + + void close() { + controller.close(); + } + + @override + void initState() { + super.initState(); + // tambahkan initial component file value + files = widget.files; + addFileToSink(files); + // dapatkan stream dan listen ke onchange + stream = controller.stream; + } + + @override + void dispose() { + close(); + super.dispose(); + } + + /// ketika user memilih menggunakan camera saat input file + Future pickFileFromCamera(BuildContext modalContext) async { + final imagePicker = ImagePicker(); + + final result = await imagePicker.pickImage( + source: ImageSource.camera, + preferredCameraDevice: CameraDevice.rear, + imageQuality: 40, + ); + + if (result != null) { + final pickedFile = File(result.path); + if (widget.allowMultiple == true) { + addFileToSink([...files, pickedFile]); + } + + if (widget.allowMultiple == false) { + addFileToSink([pickedFile]); + } + } + } + + /// ketika user memilih menggunakan gallery saat input file + Future pickFileFromGallery(BuildContext modalContext) async { + final result = await FilePicker.platform.pickFiles( + allowMultiple: widget.allowMultiple!, + type: FileType.custom, + allowedExtensions: widget.allowedExtensions, + allowCompression: true, + ); + + for (var file in result?.files ?? []) { + final pickedFile = File(file.path); + if (widget.allowMultiple == true) { + addFileToSink([...files, pickedFile]); + } + + if (widget.allowMultiple == false) { + addFileToSink([pickedFile]); + } + } + } + + @override + Widget build(BuildContext context) { + final theme = GolekTheme.of(context); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all( + color: Colors.transparent, + width: 3, + ), + ), + width: 335, + child: IntrinsicHeight( + child: DashedRect( + color: widget.isError! + ? theme.dangerMainColor // jika error dan touched + : theme.neutral50Color, + strokeWidth: 2.0, + gap: 3.0, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const SizedBox(height: 21), + OutlinedButton( + onPressed: () => showModalFileToPick( + context: context, + onPickCamera: (context) async { + await pickFileFromCamera(context); + Navigator.of(context).pop(); + }, + onPickGallery: (context) async { + await pickFileFromGallery(context); + Navigator.of(context).pop(); + }, + ), + style: OutlinedButton.styleFrom( + side: BorderSide( + width: 1, + color: theme.primaryMainColor, + ), + backgroundColor: Colors.transparent, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(6.0), + ), + ), + child: Text( + 'Upload Foto\u{002A}', + style: theme.textStyle.copyWith( + fontSize: FontSize.style14, + color: theme.primaryMainColor, + ), + ), + ), + const SizedBox(height: 10), + StreamBuilder( + stream: stream, + builder: (context, snapshot) { + widget.onChange.call(files); + return ListFilesBuilder( + files: files, + multiple: widget.allowMultiple!, + onRemoveFile: removeFile, + ); + }, + ), + Text( + 'Maks. 1 Foto, 1 Foto Maks. 2 mb', + style: theme.textStyle.copyWith( + fontSize: FontSize.style14, + color: theme.primaryMainColor, + ), + ), + const SizedBox(height: 38), + ], + ), + ), + ), + ), + ErrorMessageBuilder( + inputLabel: widget.inputLabel, + messageError: widget.messageError ?? '', + ) + ], + ); + } +} + +// stateless widget tampilan user files yang telah diinput +class ListFilesBuilder extends StatelessWidget { + final List files; + final bool multiple; + final Function(File file) onRemoveFile; + + const ListFilesBuilder({ + Key? key, + required this.files, + required this.multiple, + required this.onRemoveFile, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final theme = GolekTheme.of(context); + return Expanded( + child: Wrap( + runSpacing: 4, + spacing: 4, + alignment: WrapAlignment.center, + children: List.generate(files.length, (index) { + var file = files[index]; + + return Column(children: [ + Visibility( + visible: multiple == false, + child: Container( + margin: const EdgeInsets.all(10), + child: ClipRRect( + borderRadius: BorderRadius.circular(6), + child: ExtendedImage.file( + file, + height: 105, + width: 150, + enableMemoryCache: false, + clearMemoryCacheIfFailed: true, + clearMemoryCacheWhenDispose: true, + ), + ), + ), + ), + Visibility( + visible: multiple == true, + child: Stack( + children: [ + Container( + margin: const EdgeInsets.all(10), + child: ClipRRect( + borderRadius: BorderRadius.circular(6), + child: ExtendedImage.file( + file, + height: 105, + width: 150, + enableMemoryCache: false, + clearMemoryCacheIfFailed: true, + clearMemoryCacheWhenDispose: true, + ), + ), + ), + GestureDetector( + onTap: () => onRemoveFile(file), + child: Container( + decoration: BoxDecoration( + color: theme.dangerMainColor, + borderRadius: BorderRadius.circular(40), + ), + child: Icon( + Icons.remove, + color: theme.neutral10Color, + ), + ), + ) + ], + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 10), + child: Text( + ((file.path).split('/').last), + textAlign: TextAlign.center, + ), + ), + ]); + }), + ), + ); + } +} + +// modal untuk memilih user akan menggunakan kamera atau gallery +void showModalFileToPick({ + required BuildContext context, + required Future Function(BuildContext modalContext) onPickCamera, + required Future Function(BuildContext modalContext) onPickGallery, +}) { + final theme = GolekTheme.of(context); + FocusScope.of(context).requestFocus(FocusNode()); + showModalBottomSheet( + context: context, + barrierColor: const Color.fromRGBO(196, 196, 196, 0.3), + isScrollControlled: true, + backgroundColor: Colors.transparent, + builder: (BuildContext modalContext) { + return ConstrainedBox( + constraints: const BoxConstraints(minHeight: 150), + child: Container( + width: double.infinity, + decoration: const BoxDecoration( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(25.0), + topRight: Radius.circular(25.0), + ), + color: Colors.white, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 10), + Align( + alignment: Alignment.topCenter, + child: Container( + width: 60, + height: 6, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: const Color.fromRGBO(196, 196, 196, 1), + ), + ), + ), + const SizedBox(height: 15), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Column( + children: [ + const SizedBox(height: 15), + GestureDetector( + onTap: () => onPickGallery.call(modalContext), + child: Icon( + Icons.folder, + color: theme.primaryMainColor, + size: 50.25, + ), + ), + Text( + 'File', + style: theme.textStyle.copyWith( + fontSize: FontSize.style16, + fontWeight: FontWeight.w600, + ), + ) + ], + ), + const SizedBox(width: 107.9), + Column( + children: [ + const SizedBox(height: 15), + GestureDetector( + onTap: () => onPickCamera.call(modalContext), + child: Icon( + Icons.camera_alt, + color: theme.primaryMainColor, + size: 50.25, + ), + ), + Text( + 'Kamera', + style: theme.textStyle.copyWith( + fontSize: FontSize.style16, + fontWeight: FontWeight.w600, + ), + ), + ], + ) + ], + ), + const SizedBox(height: 52), + ], + ), + ), + ); + }, + ); +} diff --git a/packages/component_library/pubspec.lock b/packages/component_library/pubspec.lock index 9ce5094..4e5266c 100644 --- a/packages/component_library/pubspec.lock +++ b/packages/component_library/pubspec.lock @@ -78,6 +78,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.6.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: transitive description: @@ -85,6 +92,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.2" + extended_image: + dependency: "direct main" + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" fake_async: dependency: transitive description: @@ -92,6 +113,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" file: dependency: transitive description: @@ -99,6 +127,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" flutter: dependency: "direct main" description: flutter @@ -116,6 +151,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: "direct main" description: @@ -128,6 +170,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -142,6 +189,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" http_multi_server: dependency: transitive description: @@ -156,6 +217,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + image_picker: + dependency: "direct main" + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: "direct main" description: @@ -176,7 +272,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" lints: dependency: transitive description: @@ -261,6 +357,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -268,6 +413,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" pool: dependency: transitive description: @@ -275,6 +434,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" pub_semver: dependency: transitive description: @@ -427,6 +593,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -443,4 +623,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.0 <3.0.0" - flutter: ">=2.11.0-0.1.pre" + flutter: ">=3.3.0" diff --git a/packages/component_library/pubspec.yaml b/packages/component_library/pubspec.yaml index 92de0e9..82854f8 100644 --- a/packages/component_library/pubspec.yaml +++ b/packages/component_library/pubspec.yaml @@ -12,6 +12,9 @@ dependencies: intl: ^0.17.0 flutter_svg: ^1.1.6 auto_size_text: ^3.0.0-nullsafety.0 + image_picker: ^0.8.6 + file_picker: ^5.2.3 + extended_image: ^6.3.4 dev_dependencies: flutter_test: diff --git a/packages/features/landing_menu/pubspec.lock b/packages/features/landing_menu/pubspec.lock index 086e2a0..cf80d60 100644 --- a/packages/features/landing_menu/pubspec.lock +++ b/packages/features/landing_menu/pubspec.lock @@ -92,6 +92,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.6.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: transitive description: @@ -99,6 +106,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.2" + extended_image: + dependency: transitive + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" fake_async: dependency: transitive description: @@ -106,6 +127,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" file: dependency: transitive description: @@ -113,6 +141,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" flutter: dependency: "direct main" description: flutter @@ -137,6 +172,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: transitive description: @@ -149,6 +191,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" form_fields: dependency: "direct main" description: @@ -170,6 +217,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" http_multi_server: dependency: transitive description: @@ -184,6 +245,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + image_picker: + dependency: transitive + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: transitive description: @@ -204,7 +300,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" lints: dependency: transitive description: @@ -296,6 +392,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -303,6 +448,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" pool: dependency: transitive description: @@ -310,6 +469,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" provider: dependency: transitive description: @@ -476,6 +642,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -492,4 +672,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0" diff --git a/packages/features/subscription_menu/pubspec.lock b/packages/features/subscription_menu/pubspec.lock index 086e2a0..cf80d60 100644 --- a/packages/features/subscription_menu/pubspec.lock +++ b/packages/features/subscription_menu/pubspec.lock @@ -92,6 +92,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.6.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: transitive description: @@ -99,6 +106,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.2" + extended_image: + dependency: transitive + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" fake_async: dependency: transitive description: @@ -106,6 +127,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" file: dependency: transitive description: @@ -113,6 +141,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" flutter: dependency: "direct main" description: flutter @@ -137,6 +172,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: transitive description: @@ -149,6 +191,11 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" form_fields: dependency: "direct main" description: @@ -170,6 +217,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" http_multi_server: dependency: transitive description: @@ -184,6 +245,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + image_picker: + dependency: transitive + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: transitive description: @@ -204,7 +300,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" lints: dependency: transitive description: @@ -296,6 +392,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -303,6 +448,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" pool: dependency: transitive description: @@ -310,6 +469,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" provider: dependency: transitive description: @@ -476,6 +642,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -492,4 +672,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0" diff --git a/packages/form_fields/pubspec.lock b/packages/form_fields/pubspec.lock index 19e6722..55d882c 100644 --- a/packages/form_fields/pubspec.lock +++ b/packages/form_fields/pubspec.lock @@ -85,6 +85,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.6.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: transitive description: @@ -92,6 +99,27 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.0.2" + extended_image: + dependency: transitive + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" file: dependency: transitive description: @@ -99,6 +127,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" flutter: dependency: "direct main" description: flutter @@ -109,6 +144,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: transitive description: @@ -116,6 +158,11 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.6" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" frontend_server_client: dependency: transitive description: @@ -130,6 +177,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" http_multi_server: dependency: transitive description: @@ -144,6 +205,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + image_picker: + dependency: transitive + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: transitive description: @@ -164,7 +260,7 @@ packages: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" lints: dependency: "direct dev" description: @@ -242,6 +338,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -249,6 +394,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" pool: dependency: transitive description: @@ -256,6 +415,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" pub_semver: dependency: transitive description: @@ -415,6 +581,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -431,4 +611,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.lock b/pubspec.lock index 15fd050..8140edc 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -190,6 +190,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.1" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: transitive description: @@ -218,6 +225,20 @@ packages: relative: true source: path version: "1.0.0" + extended_image: + dependency: transitive + description: + name: extended_image + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.4" + extended_image_library: + dependency: transitive + description: + name: extended_image_library + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.1" fake_async: dependency: transitive description: @@ -225,6 +246,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" file: dependency: transitive description: @@ -232,6 +260,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "6.1.4" + file_picker: + dependency: transitive + description: + name: file_picker + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.3" firebase_analytics: dependency: transitive description: @@ -340,6 +375,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" flutter_svg: dependency: transitive description: @@ -385,6 +427,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.0" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_client_helper: + dependency: transitive + description: + name: http_client_helper + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" http_multi_server: dependency: transitive description: @@ -399,6 +455,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.2" + image_picker: + dependency: transitive + description: + name: image_picker + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.5+3" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.10" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + url: "https://pub.dartlang.org" + source: hosted + version: "0.8.6+1" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.2" intl: dependency: "direct main" description: @@ -518,6 +609,55 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.1" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.22" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" petitparser: dependency: transitive description: @@ -525,6 +665,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "5.1.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" plugin_platform_interface: dependency: transitive description: @@ -539,6 +686,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" provider: dependency: transitive description: @@ -684,6 +838,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" xml: dependency: transitive description: @@ -700,4 +868,4 @@ packages: version: "3.1.1" sdks: dart: ">=2.18.2 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.3.0"