diff --git a/README.md b/README.md index 1ca12fc..3f6fb1a 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,7 @@ - [`android-studio`](https://developer.android.com/studio) - [Enable NDK](https://developer.android.com/studio/projects/install-ndk) Check local.properties for current NDK version -Downgrade flutter to a 1.x release (the following worked on an AUR install of `flutter`) - -``` -cd $(dirname $(readlink $(which flutter))) -git checkout 1.22.6 -flutter doctor -``` +Currently using flutter 2.0.5 Copy env.sh.example to env.sh and update your PATH variable to expose both flutter and go bin directories diff --git a/ios/Podfile.lock b/ios/Podfile.lock index e70cc9a..c04bec2 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -97,7 +97,7 @@ SPEC CHECKSUMS: DKPhotoGallery: e880aef16c108333240e1e7327896f2ea380f4f0 file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 - Flutter: 0e3d915762c693b495b44d77113d4970485de6ec + Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c MMWormhole: 0cd3fd35a9118b2e2d762b499f54eeaace0be791 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 @@ -109,4 +109,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: e8d4fb1ed5b0713de2623a28dfae2585e15c0d00 -COCOAPODS: 1.10.0 +COCOAPODS: 1.10.1 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 32df5c2..25f1a83 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -343,7 +343,6 @@ "${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework", "${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework", "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework", - "${PODS_ROOT}/../Flutter/Flutter.framework", "${BUILT_PRODUCTS_DIR}/MMWormhole/MMWormhole.framework", "${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework", "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", @@ -360,7 +359,6 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMWormhole.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a1..919434a 100644 --- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/lib/components/CIDRField.dart b/lib/components/CIDRField.dart index 50e3972..6aae1f9 100644 --- a/lib/components/CIDRField.dart +++ b/lib/components/CIDRField.dart @@ -87,7 +87,7 @@ class _CIDRFieldState extends State { widget.onChanged(cidr); }, maxLength: 2, - inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], + inputFormatters: [FilteringTextInputFormatter.digitsOnly], textInputAction: widget.textInputAction ?? TextInputAction.done, placeholder: 'bits', )) diff --git a/lib/components/IPAndPortField.dart b/lib/components/IPAndPortField.dart index 7b78367..8dda5ce 100644 --- a/lib/components/IPAndPortField.dart +++ b/lib/components/IPAndPortField.dart @@ -93,7 +93,7 @@ class _IPAndPortFieldState extends State { widget.onChanged(_ipAndPort); }, maxLength: 5, - inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], + inputFormatters: [FilteringTextInputFormatter.digitsOnly], textInputAction: TextInputAction.done, placeholder: 'port', )) diff --git a/lib/components/IPField.dart b/lib/components/IPField.dart index 108f8e9..9153526 100644 --- a/lib/components/IPField.dart +++ b/lib/components/IPField.dart @@ -2,7 +2,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; -import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:mobile_nebula/components/SpecialTextField.dart'; import '../services/utils.dart'; @@ -51,7 +50,7 @@ class IPField extends StatelessWidget { maxLengthEnforced: ipOnly ? true : false, inputFormatters: ipOnly ? [IPTextInputFormatter()] - : [WhitelistingTextInputFormatter(RegExp(r'[^\s]+'))], + : [FilteringTextInputFormatter.allow(RegExp(r'[^\s]+'))], textInputAction: this.textInputAction, placeholder: help, )); diff --git a/lib/components/SimplePage.dart b/lib/components/SimplePage.dart index ade5700..3006257 100644 --- a/lib/components/SimplePage.dart +++ b/lib/components/SimplePage.dart @@ -96,7 +96,7 @@ class SimplePage extends StatelessWidget { title: Text(title), leading: leadingAction != null ? leadingAction : Utils.leadingBackWidget(context), trailingActions: trailingActions, - ios: (_) => CupertinoNavigationBarData( + cupertino: (_, __) => CupertinoNavigationBarData( transitionBetweenRoutes: false, ), ), diff --git a/lib/components/SpecialSelectableText.dart b/lib/components/SpecialSelectableText.dart index f63f9a0..365b4a6 100644 --- a/lib/components/SpecialSelectableText.dart +++ b/lib/components/SpecialSelectableText.dart @@ -12,6 +12,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; +//TODO: please let us delete this file /// An eyeballed value that moves the cursor slightly left of where it is /// rendered for text on Android so its positioning more accurately matches the diff --git a/lib/components/SpecialTextField.dart b/lib/components/SpecialTextField.dart index 0df620a..69be0bc 100644 --- a/lib/components/SpecialTextField.dart +++ b/lib/components/SpecialTextField.dart @@ -3,6 +3,8 @@ import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; +//TODO: please let us delete this file + /// A normal TextField or CupertinoTextField that watches for copy, paste, cut, or select all keyboard actions class SpecialTextField extends StatefulWidget { const SpecialTextField( @@ -74,7 +76,7 @@ class _SpecialTextFieldState extends State { void initState() { formatters = widget.inputFormatters; if (formatters == null || formatters.length == 0) { - formatters = [WhitelistingTextInputFormatter(RegExp(r'[^\t]'))]; + formatters = [FilteringTextInputFormatter.allow(RegExp(r'[^\t]'))]; } super.initState(); @@ -108,7 +110,7 @@ class _SpecialTextFieldState extends State { }, expands: widget.expands, inputFormatters: formatters, - android: (_) => MaterialTextFieldData( + material: (_, __) => MaterialTextFieldData( decoration: InputDecoration( border: InputBorder.none, contentPadding: EdgeInsets.zero, @@ -116,7 +118,7 @@ class _SpecialTextFieldState extends State { hintText: widget.placeholder, counterText: '', suffix: widget.suffix)), - ios: (_) => CupertinoTextFieldData( + cupertino: (_, __) => CupertinoTextFieldData( decoration: BoxDecoration(), padding: EdgeInsets.zero, placeholder: widget.placeholder, diff --git a/lib/components/config/ConfigButtonItem.dart b/lib/components/config/ConfigButtonItem.dart index c0c9b0b..73e9d92 100644 --- a/lib/components/config/ConfigButtonItem.dart +++ b/lib/components/config/ConfigButtonItem.dart @@ -1,6 +1,5 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:mobile_nebula/components/SpecialButton.dart'; import 'package:mobile_nebula/services/utils.dart'; @@ -21,21 +20,5 @@ class ConfigButtonItem extends StatelessWidget { constraints: BoxConstraints(minHeight: Utils.minInteractiveSize, minWidth: double.infinity), child: Center(child: content), )); - - return Container( - color: Utils.configItemBackground(context), - constraints: BoxConstraints(minHeight: Utils.minInteractiveSize, minWidth: double.infinity), - child: PlatformButton( - androidFlat: (_) => MaterialFlatButtonData( - textTheme: ButtonTextTheme.normal, padding: EdgeInsets.zero, shape: RoundedRectangleBorder()), - ios: (_) => CupertinoButtonData(padding: EdgeInsets.zero, borderRadius: BorderRadius.zero), - padding: EdgeInsets.symmetric(vertical: 7), - child: content, - onPressed: () { - if (onPressed != null) { - onPressed(); - } - }, - )); } } diff --git a/lib/main.dart b/lib/main.dart index f0bf033..8a298a9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -85,12 +85,12 @@ class _AppState extends State { DefaultCupertinoLocalizations.delegate, ], title: 'Nebula', - android: (_) { + material: (_, __) { return new MaterialAppData( themeMode: brightness == Brightness.light ? ThemeMode.light : ThemeMode.dark, ); }, - ios: (_) => CupertinoAppData( + cupertino: (_, __) => CupertinoAppData( theme: CupertinoThemeData(brightness: brightness), ), home: MainScreen(), diff --git a/lib/models/StaticHosts.dart b/lib/models/StaticHosts.dart index a55dc0f..1e30d89 100644 --- a/lib/models/StaticHosts.dart +++ b/lib/models/StaticHosts.dart @@ -10,7 +10,7 @@ class StaticHost { lighthouse = json['lighthouse']; var list = json['destinations'] as List; - var result = List(); + var result = []; list.forEach((item) { result.add(IPAndPort.fromString(item)); diff --git a/lib/screens/AboutScreen.dart b/lib/screens/AboutScreen.dart index a489557..8a8433d 100644 --- a/lib/screens/AboutScreen.dart +++ b/lib/screens/AboutScreen.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; @@ -40,7 +38,7 @@ class _AboutScreenState extends State { Widget build(BuildContext context) { if (!ready) { return Center( - child: PlatformCircularProgressIndicator(ios: (_) { + child: PlatformCircularProgressIndicator(cupertino: (_, __) { return CupertinoProgressIndicatorData(radius: 50); }), ); diff --git a/lib/screens/MainScreen.dart b/lib/screens/MainScreen.dart index 9ba8c41..3e51287 100644 --- a/lib/screens/MainScreen.dart +++ b/lib/screens/MainScreen.dart @@ -72,7 +72,7 @@ class _MainScreenState extends State { Widget _buildBody() { if (!ready) { return Center( - child: PlatformCircularProgressIndicator(ios: (_) { + child: PlatformCircularProgressIndicator(cupertino: (_, __) { return CupertinoProgressIndicatorData(radius: 50); }), ); diff --git a/lib/screens/siteConfig/AdvancedScreen.dart b/lib/screens/siteConfig/AdvancedScreen.dart index 8911f0b..b80c8f8 100644 --- a/lib/screens/siteConfig/AdvancedScreen.dart +++ b/lib/screens/siteConfig/AdvancedScreen.dart @@ -77,7 +77,7 @@ class _AdvancedScreenState extends State { suffix: Text("seconds"), textAlign: TextAlign.right, maxLength: 5, - inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onSaved: (val) { setState(() { settings.lhDuration = int.parse(val); @@ -93,7 +93,7 @@ class _AdvancedScreenState extends State { keyboardType: TextInputType.number, textAlign: TextAlign.right, maxLength: 5, - inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onSaved: (val) { setState(() { settings.port = int.parse(val); @@ -108,7 +108,7 @@ class _AdvancedScreenState extends State { keyboardType: TextInputType.number, textAlign: TextAlign.right, maxLength: 5, - inputFormatters: [WhitelistingTextInputFormatter.digitsOnly], + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onSaved: (val) { setState(() { settings.mtu = int.parse(val); diff --git a/lib/screens/siteConfig/CAListScreen.dart b/lib/screens/siteConfig/CAListScreen.dart index 9b236de..06cdbcf 100644 --- a/lib/screens/siteConfig/CAListScreen.dart +++ b/lib/screens/siteConfig/CAListScreen.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:barcode_scan/barcode_scan.dart'; -import 'package:file_picker/file_picker.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -189,25 +188,23 @@ class _CAListScreenState extends State { ConfigButtonItem( content: Text('Choose a file'), onPressed: () async { - final file = await FilePicker.getFile(); - if (file == null) { - return; - } - - var content = ""; try { - content = file.readAsStringSync(); + final content = await Utils.pickFile(context); + if (content == null) { + return; + } + + _addCAEntry(content, (err) { + if (err != null) { + Utils.popError(context, 'Error loading CA file', err); + } else { + setState(() {}); + } + }); + } catch (err) { return Utils.popError(context, 'Failed to load CA file', err.toString()); } - - _addCAEntry(content, (err) { - if (err != null) { - Utils.popError(context, 'Error loading CA file', err); - } else { - setState(() {}); - } - }); }) ], ) diff --git a/lib/screens/siteConfig/CertificateScreen.dart b/lib/screens/siteConfig/CertificateScreen.dart index 035a48c..dcf11ca 100644 --- a/lib/screens/siteConfig/CertificateScreen.dart +++ b/lib/screens/siteConfig/CertificateScreen.dart @@ -219,34 +219,22 @@ class _CertificateScreenState extends State { ConfigButtonItem( content: Center(child: Text('Choose a file')), onPressed: () async { - var file; try { - await FilePicker.clearTemporaryFiles(); - file = await FilePicker.getFile(); - - if (file == null) { - print('GOT A NULL'); + final content = await Utils.pickFile(context); + if (content == null) { return; } - } catch (err) { - print('HEY $err'); - } - var content = ""; - try { - content = file.readAsStringSync(); + _addCertEntry(content, (err) { + if (err != null) { + Utils.popError(context, 'Error loading certificate file', err); + } else { + setState(() {}); + } + }); } catch (err) { - print('CAUGH IN READ ${file}'); - return Utils.popError(context, 'Failed to load CA file', err.toString()); + return Utils.popError(context, 'Failed to load certificate file', err.toString()); } - - _addCertEntry(content, (err) { - if (err != null) { - Utils.popError(context, 'Error loading certificate file', err); - } else { - setState(() {}); - } - }); }) ], ) diff --git a/lib/screens/siteConfig/CipherScreen.dart b/lib/screens/siteConfig/CipherScreen.dart index 9904b5a..5ac9b84 100644 --- a/lib/screens/siteConfig/CipherScreen.dart +++ b/lib/screens/siteConfig/CipherScreen.dart @@ -1,11 +1,9 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; -import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:mobile_nebula/components/FormPage.dart'; import 'package:mobile_nebula/components/config/ConfigCheckboxItem.dart'; import 'package:mobile_nebula/components/config/ConfigSection.dart'; -import 'package:mobile_nebula/services/utils.dart'; class CipherScreen extends StatefulWidget { const CipherScreen({Key key, this.cipher, @required this.onSave}) : super(key: key); diff --git a/lib/screens/siteConfig/LogVerbosityScreen.dart b/lib/screens/siteConfig/LogVerbosityScreen.dart index d229b25..aed6374 100644 --- a/lib/screens/siteConfig/LogVerbosityScreen.dart +++ b/lib/screens/siteConfig/LogVerbosityScreen.dart @@ -1,11 +1,9 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; -import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:mobile_nebula/components/FormPage.dart'; import 'package:mobile_nebula/components/config/ConfigCheckboxItem.dart'; import 'package:mobile_nebula/components/config/ConfigSection.dart'; -import 'package:mobile_nebula/services/utils.dart'; class LogVerbosityScreen extends StatefulWidget { const LogVerbosityScreen({Key key, this.verbosity, @required this.onSave}) : super(key: key); diff --git a/lib/screens/siteConfig/StaticHostsScreen.dart b/lib/screens/siteConfig/StaticHostsScreen.dart index 4d3b012..3e43f12 100644 --- a/lib/screens/siteConfig/StaticHostsScreen.dart +++ b/lib/screens/siteConfig/StaticHostsScreen.dart @@ -20,7 +20,7 @@ class _Hostmap { bool lighthouse; _Hostmap({this.focusNode, this.nebulaIp, destinations, this.lighthouse}) - : destinations = destinations ?? List(); + : destinations = destinations ?? []; } class StaticHostsScreen extends StatefulWidget { diff --git a/lib/screens/siteConfig/UnsafeRouteScreen.dart b/lib/screens/siteConfig/UnsafeRouteScreen.dart index 97c3a44..c772f81 100644 --- a/lib/screens/siteConfig/UnsafeRouteScreen.dart +++ b/lib/screens/siteConfig/UnsafeRouteScreen.dart @@ -6,13 +6,11 @@ import 'package:flutter_platform_widgets/flutter_platform_widgets.dart'; import 'package:mobile_nebula/components/CIDRFormField.dart'; import 'package:mobile_nebula/components/FormPage.dart'; import 'package:mobile_nebula/components/IPFormField.dart'; -import 'package:mobile_nebula/components/PlatformTextFormField.dart'; import 'package:mobile_nebula/components/config/ConfigItem.dart'; import 'package:mobile_nebula/components/config/ConfigSection.dart'; import 'package:mobile_nebula/models/CIDR.dart'; import 'package:mobile_nebula/models/UnsafeRoute.dart'; import 'package:mobile_nebula/services/utils.dart'; -import 'package:mobile_nebula/validators/mtuValidator.dart'; class UnsafeRouteScreen extends StatefulWidget { const UnsafeRouteScreen({Key key, this.route, this.onDelete, @required this.onSave}) : super(key: key); diff --git a/lib/services/utils.dart b/lib/services/utils.dart index c09f771..7821402 100644 --- a/lib/services/utils.dart +++ b/lib/services/utils.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'dart:ui'; +import 'package:file_picker/file_picker.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/painting.dart'; @@ -127,7 +128,7 @@ class Utils { builder: (context) { if (Platform.isAndroid) { return AlertDialog(title: Text(title), content: Text(error), actions: [ - FlatButton( + TextButton( child: Text('Ok'), onPressed: () { Navigator.of(context).pop(); @@ -163,4 +164,15 @@ class Utils { final parts = ip.split('.'); return int.parse(parts[3]) | int.parse(parts[2]) << 8 | int.parse(parts[1]) << 16 | int.parse(parts[0]) << 24; } + + static Future pickFile(BuildContext context) async { + await FilePicker.platform.clearTemporaryFiles(); + final result = await FilePicker.platform.pickFiles(allowMultiple: false); + if (result == null) { + return null; + } + + final file = File(result.files.first.path); + return file.readAsString(); + } } diff --git a/pubspec.lock b/pubspec.lock index b322b53..41dc65a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,7 +7,7 @@ packages: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.5.0-nullsafety.1" + version: "2.5.0" barcode_scan: dependency: "direct main" description: @@ -21,77 +21,77 @@ packages: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" characters: dependency: transitive description: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.3" + version: "1.1.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" clock: dependency: transitive description: name: clock url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.15.0-nullsafety.3" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" + version: "1.15.0" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "3.0.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons url: "https://pub.dartlang.org" source: hosted - version: "0.1.3" + version: "1.0.2" fake_async: dependency: transitive description: name: fake_async url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" file: dependency: transitive description: name: file url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "6.1.0" file_picker: dependency: "direct main" description: name: file_picker url: "https://pub.dartlang.org" source: hosted - version: "1.10.0" + version: "3.0.1" fixnum: dependency: transitive description: @@ -110,14 +110,14 @@ packages: name: flutter_platform_widgets url: "https://pub.dartlang.org" source: hosted - version: "0.60.2" + version: "1.2.0" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "2.0.1" flutter_test: dependency: "direct dev" description: flutter @@ -128,118 +128,111 @@ packages: description: flutter source: sdk version: "0.0.0" - intl: + js: dependency: transitive description: - name: intl + name: js url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" + version: "0.6.3" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10-nullsafety.1" + version: "0.12.10" meta: dependency: transitive description: name: meta url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" package_info: dependency: "direct main" description: name: package_info url: "https://pub.dartlang.org" source: hosted - version: "0.4.1" + version: "2.0.0" path: dependency: transitive description: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.1" + version: "1.8.0" path_provider: dependency: "direct main" description: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "1.6.10" + version: "2.0.1" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+1" + version: "2.0.0" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.4+3" + version: "2.0.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "2.0.1" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" - platform_detect: - dependency: transitive - description: - name: platform_detect - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" + version: "3.0.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.2" + version: "2.0.0" process: dependency: transitive description: name: process url: "https://pub.dartlang.org" source: hosted - version: "3.0.13" + version: "4.2.1" protobuf: dependency: transitive description: name: protobuf url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" - pub_semver: - dependency: transitive - description: - name: pub_semver - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.4" + version: "1.1.3" pull_to_refresh: dependency: "direct main" description: name: pull_to_refresh url: "https://pub.dartlang.org" source: hosted - version: "1.6.0" + version: "1.6.5" sky_engine: dependency: transitive description: flutter @@ -251,105 +244,119 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.8.0-nullsafety.2" + version: "1.8.0" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.10.0-nullsafety.1" + version: "1.10.0" stream_channel: dependency: transitive description: name: stream_channel url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.1" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner url: "https://pub.dartlang.org" source: hosted - version: "1.1.0-nullsafety.1" + version: "1.1.0" term_glyph: dependency: transitive description: name: term_glyph url: "https://pub.dartlang.org" source: hosted - version: "1.2.0-nullsafety.1" + version: "1.2.0" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.19-nullsafety.2" + version: "0.2.19" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.3.0-nullsafety.3" + version: "1.3.0" url_launcher: dependency: "direct main" description: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "5.5.2" + version: "6.0.3" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+1" + version: "2.0.0" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+7" + version: "2.0.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "2.0.2" url_launcher_web: dependency: transitive description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.3+1" + version: "2.0.0" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" uuid: dependency: "direct main" description: name: uuid url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "3.0.4" vector_math: dependency: transitive description: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0-nullsafety.3" + version: "2.1.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" xdg_directories: dependency: transitive description: name: xdg_directories url: "https://pub.dartlang.org" source: hosted - version: "0.1.0" + version: "0.2.0" sdks: - dart: ">=2.10.0-110 <2.11.0" - flutter: ">=1.17.5 <2.0.0" + dart: ">=2.12.0 <3.0.0" + flutter: ">=2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8983860..0d3003a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -22,15 +22,15 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 - flutter_platform_widgets: ^0.60.2 - path_provider: ^1.6.0 - file_picker: ^1.9.0 + cupertino_icons: ^1.0.2 + flutter_platform_widgets: ^1.2.0 + path_provider: ^2.0.1 + file_picker: ^3.0.1 barcode_scan: ^3.0.1 - uuid: ^2.0.4 - package_info: '>=0.4.1 <2.0.0' - url_launcher: ^5.5.2 - pull_to_refresh: ^1.6.0 + uuid: ^3.0.4 + package_info: ^2.0.0 + url_launcher: ^6.0.3 + pull_to_refresh: ^1.6.5 dev_dependencies: flutter_test: