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: