diff --git a/.metadata b/.metadata index 6343afd1..484e7737 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled. version: - revision: 9944297138845a94256f1cf37beb88ff9a8e811a + revision: f72efea43c3013323d1b95cff571f3c1caa37583 channel: stable project_type: app @@ -13,11 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a - base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a + create_revision: f72efea43c3013323d1b95cff571f3c1caa37583 + base_revision: f72efea43c3013323d1b95cff571f3c1caa37583 - platform: macos - create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a - base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a + create_revision: f72efea43c3013323d1b95cff571f3c1caa37583 + base_revision: f72efea43c3013323d1b95cff571f3c1caa37583 # User provided section diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index bd2385b3..3be4cc2c 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -359,7 +359,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 288; + CURRENT_PROJECT_VERSION = 293; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -367,7 +367,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.288; + MARKETING_VERSION = 1.0.293; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -490,7 +490,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 288; + CURRENT_PROJECT_VERSION = 293; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -498,7 +498,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.288; + MARKETING_VERSION = 1.0.293; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; @@ -515,7 +515,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; - CURRENT_PROJECT_VERSION = 288; + CURRENT_PROJECT_VERSION = 293; DEVELOPMENT_TEAM = BA88US33G6; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-$(CONFIGURATION).plist"; @@ -523,7 +523,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0.288; + MARKETING_VERSION = 1.0.293; PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; diff --git a/lib/core/utils/navigator.dart b/lib/core/extension/navigator.dart similarity index 50% rename from lib/core/utils/navigator.dart rename to lib/core/extension/navigator.dart index 22e09794..b0ff14e7 100644 --- a/lib/core/utils/navigator.dart +++ b/lib/core/extension/navigator.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; extension ContextX on BuildContext { - void pop([T? result]) { - Navigator.of(this).pop(T); + void pop([T? result]) { + Navigator.of(this).pop(result); } } diff --git a/lib/core/update.dart b/lib/core/update.dart index 5610022f..c3bb30ee 100644 --- a/lib/core/update.dart +++ b/lib/core/update.dart @@ -3,12 +3,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:logging/logging.dart'; import 'package:r_upgrade/r_upgrade.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import '../data/provider/app.dart'; import '../data/res/build_data.dart'; import '../data/service/app.dart'; import '../locator.dart'; -import 'utils/navigator.dart'; import 'utils/platform.dart'; import 'utils/ui.dart'; diff --git a/lib/core/utils/server.dart b/lib/core/utils/server.dart index bdae473a..a14632ee 100644 --- a/lib/core/utils/server.dart +++ b/lib/core/utils/server.dart @@ -30,8 +30,10 @@ enum GenSSHClientStatus { pwd, } -Future genClient(ServerPrivateInfo spi, - {void Function(GenSSHClientStatus)? onStatus}) async { +Future genClient( + ServerPrivateInfo spi, { + void Function(GenSSHClientStatus)? onStatus, +}) async { final onStatus_ = onStatus ?? (_) {}; onStatus_(GenSSHClientStatus.socket); final socket = await SSHSocket.connect( diff --git a/lib/core/utils/ui.dart b/lib/core/utils/ui.dart index 16ed056e..de9e7c9d 100644 --- a/lib/core/utils/ui.dart +++ b/lib/core/utils/ui.dart @@ -3,7 +3,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/data/res/ui.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -46,18 +46,18 @@ Future openUrl(String url) async { return await launchUrl(url.uri, mode: LaunchMode.externalApplication); } -Future? showRoundDialog({ +Future showRoundDialog({ required BuildContext context, Widget? child, List? actions, Widget? title, EdgeInsets? padding, bool barrierDismiss = true, -}) { - return showDialog( +}) async { + return await showDialog( context: context, barrierDismissible: barrierDismiss, - builder: (ctx) { + builder: (_) { return CardDialog( title: title, content: child, diff --git a/lib/data/provider/server.dart b/lib/data/provider/server.dart index 8ea099b4..99ab0408 100644 --- a/lib/data/provider/server.dart +++ b/lib/data/provider/server.dart @@ -45,20 +45,21 @@ class ServerProvider extends BusyProvider { return Server(spi, initStatus, null, ServerState.disconnected); } - Future refreshData( - {ServerPrivateInfo? spi, bool onlyFailed = false}) async { + Future refreshData({ + ServerPrivateInfo? spi, + bool onlyFailed = false, + }) async { if (spi != null) { await _getData(spi); return; } - final futures = _servers.values.map((s) async { + await Future.wait(_servers.values.map((s) async { if (onlyFailed) { if (s.state != ServerState.failed) return; _limiter.resetTryTimes(s.spi.id); } return await _getData(s.spi); - }); - await Future.wait(futures); + })); } Future startAutoRefresh() async { @@ -117,13 +118,14 @@ class ServerProvider extends BusyProvider { } Future updateServer( - ServerPrivateInfo old, ServerPrivateInfo newSpi) async { + ServerPrivateInfo old, + ServerPrivateInfo newSpi, + ) async { _servers.remove(old.id); _store.update(old, newSpi); _servers[newSpi.id] = genServer(newSpi); _servers[newSpi.id]?.client = await genClient(newSpi); - notifyListeners(); - refreshData(spi: newSpi); + await refreshData(spi: newSpi); } Future _getData(ServerPrivateInfo spi) async { @@ -132,6 +134,8 @@ class ServerProvider extends BusyProvider { if (s == null) return; var raw = ''; + var segments = []; + try { final state = s.state; if (state.shouldConnect) { @@ -167,23 +171,31 @@ class ServerProvider extends BusyProvider { if (s.client == null) return; // run script to get server status raw = await s.client!.run("sh $shellPath").string; - final segments = raw.split(seperator).map((e) => e.trim()).toList(); + segments = raw.split(seperator).map((e) => e.trim()).toList(); if (raw.isEmpty || segments.length != CmdType.values.length) { s.state = ServerState.failed; - if (s.status.failedInfo == null || s.status.failedInfo!.isEmpty) { + if (s.status.failedInfo?.isEmpty ?? true) { s.status.failedInfo = 'Seperate segments failed, raw:\n$raw'; } return; } + } catch (e) { + s.state = ServerState.failed; + s.status.failedInfo = e.toString(); + rethrow; + } finally { + notifyListeners(); + } + try { final req = ServerStatusUpdateReq(s.status, segments); s.status = await compute(getStatus, req); // Comment for debug // s.status = await getStatus(req); } catch (e) { s.state = ServerState.failed; - s.status.failedInfo = '$e\n$raw'; - _logger.warning(e); + s.status.failedInfo = 'Parse failed: $e\n\n$raw'; + rethrow; } finally { notifyListeners(); } diff --git a/lib/data/res/build_data.dart b/lib/data/res/build_data.dart index 81fc95b5..f813e0b2 100644 --- a/lib/data/res/build_data.dart +++ b/lib/data/res/build_data.dart @@ -2,8 +2,8 @@ class BuildData { static const String name = "ServerBox"; - static const int build = 288; + static const int build = 293; static const String engine = "3.7.11"; - static const String buildAt = "2023-05-07 20:47:03.124092"; - static const int modifications = 1; + static const String buildAt = "2023-05-09 19:48:09.523377"; + static const int modifications = 4; } diff --git a/lib/view/page/backup.dart b/lib/view/page/backup.dart index 6fb1d209..e0d69e6f 100644 --- a/lib/view/page/backup.dart +++ b/lib/view/page/backup.dart @@ -5,7 +5,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/data/res/path.dart'; import '../../core/extension/colorx.dart'; diff --git a/lib/view/page/docker.dart b/lib/view/page/docker.dart index 22840fd4..07c7964f 100644 --- a/lib/view/page/docker.dart +++ b/lib/view/page/docker.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/view/widget/input_field.dart'; import '../../core/utils/ui.dart'; diff --git a/lib/view/page/home.dart b/lib/view/page/home.dart index fbe48fb1..8e3363c8 100644 --- a/lib/view/page/home.dart +++ b/lib/view/page/home.dart @@ -2,7 +2,7 @@ import 'package:after_layout/after_layout.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:get_it/get_it.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/data/provider/app.dart'; import 'package:toolbox/data/res/misc.dart'; import 'package:toolbox/view/widget/round_rect_card.dart'; diff --git a/lib/view/page/pkg.dart b/lib/view/page/pkg.dart index d1ac6d4b..a281171b 100644 --- a/lib/view/page/pkg.dart +++ b/lib/view/page/pkg.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/view/widget/input_field.dart'; import '../../data/model/pkg/upgrade_info.dart'; diff --git a/lib/view/page/private_key/edit.dart b/lib/view/page/private_key/edit.dart index 8059a93b..88c61333 100644 --- a/lib/view/page/private_key/edit.dart +++ b/lib/view/page/private_key/edit.dart @@ -5,9 +5,9 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/core/extension/numx.dart'; import 'package:toolbox/core/utils/misc.dart'; -import 'package:toolbox/core/utils/navigator.dart'; import 'package:toolbox/data/res/misc.dart'; import 'package:toolbox/view/widget/input_field.dart'; diff --git a/lib/view/page/server/edit.dart b/lib/view/page/server/edit.dart index daf9a68c..4020e978 100644 --- a/lib/view/page/server/edit.dart +++ b/lib/view/page/server/edit.dart @@ -2,7 +2,7 @@ import 'package:after_layout/after_layout.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/view/widget/input_field.dart'; import '../../../core/route.dart'; diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index a2c2ef08..9659fce9 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -4,7 +4,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:get_it/get_it.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; +import 'package:toolbox/core/utils/misc.dart'; import '../../../core/route.dart'; import '../../../core/utils/ui.dart'; @@ -114,21 +115,21 @@ class _ServerPageState extends State if (si == null) { return const SizedBox(); } - return RoundRectCard( - InkWell( - onLongPress: () => AppRoute( - ServerEditPage( - spi: si.spi, - ), - 'Edit server info page') - .go(context), - child: Padding( + return GestureDetector( + onLongPress: () => AppRoute( + ServerEditPage(spi: si.spi), + 'Edit server info page', + ).go(context), + child: RoundRectCard( + Padding( padding: const EdgeInsets.all(13), child: _buildRealServerCard(si.status, si.spi.name, si.state, si.spi), ), - onTap: () => AppRoute(ServerDetailPage(si.spi.id), 'server detail page') - .go(context), ), + onTap: () => AppRoute( + ServerDetailPage(si.spi.id), + 'server detail page', + ).go(context), ); } @@ -172,7 +173,14 @@ class _ServerPageState extends State onTap: () => showRoundDialog( context: context, title: Text(_s.error), - child: Text(ss.failedInfo ?? ''), + child: Text(ss.failedInfo ?? _s.unknownError), + actions: [ + TextButton( + onPressed: () => + copy(ss.failedInfo ?? _s.unknownError), + child: Text(_s.copy), + ) + ], ), child: Text( _s.clickSee, diff --git a/lib/view/page/setting.dart b/lib/view/page/setting.dart index d702fe49..a4e3921c 100644 --- a/lib/view/page/setting.dart +++ b/lib/view/page/setting.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_material_color_picker/flutter_material_color_picker.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/data/model/app/tab.dart'; import '../../core/utils/misc.dart'; diff --git a/lib/view/page/sftp/downloaded.dart b/lib/view/page/sftp/downloaded.dart index 768a1bc1..aaf12dcc 100644 --- a/lib/view/page/sftp/downloaded.dart +++ b/lib/view/page/sftp/downloaded.dart @@ -2,7 +2,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import '../../../core/extension/numx.dart'; import '../../../core/extension/stringx.dart'; diff --git a/lib/view/page/sftp/view.dart b/lib/view/page/sftp/view.dart index 3335ef85..99ecac62 100644 --- a/lib/view/page/sftp/view.dart +++ b/lib/view/page/sftp/view.dart @@ -3,8 +3,7 @@ import 'dart:typed_data'; import 'package:dartssh2/dartssh2.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:toolbox/core/utils/navigator.dart'; -import 'package:toolbox/view/widget/input_field.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import '../../../core/extension/numx.dart'; import '../../../core/extension/stringx.dart'; @@ -22,6 +21,7 @@ import '../../../data/res/ui.dart'; import '../../../data/store/private_key.dart'; import '../../../locator.dart'; import '../../widget/fade_in.dart'; +import '../../widget/input_field.dart'; import '../../widget/two_line_text.dart'; import 'downloading.dart'; @@ -138,7 +138,7 @@ class _SFTPPageState extends State { return IconButton( padding: const EdgeInsets.all(0), onPressed: () async { - final p = await showRoundDialog( + final p = await showRoundDialog( context: context, title: Text(_s.goto), child: Column( @@ -146,7 +146,6 @@ class _SFTPPageState extends State { children: [ Input( label: _s.path, - hint: '/', onSubmitted: (value) => context.pop(value), ), ], @@ -154,19 +153,17 @@ class _SFTPPageState extends State { actions: [ TextButton( onPressed: () => context.pop(), - child: Text(_s.cancel), + child: Text(_s.close), ) ], ); - if (p != null) { - if (p.isEmpty) { - showSnackBar(context, Text(_s.fieldMustNotEmpty)); - return; - } - _status.path?.update(p); - listDir(path: p); + // p == null || p.isEmpty + if (p?.isEmpty ?? true) { + return; } + _status.path?.update(p!); + listDir(path: p); }, icon: const Icon(Icons.gps_fixed), ); diff --git a/lib/view/page/snippet/edit.dart b/lib/view/page/snippet/edit.dart index e5356fa4..6ebe21f4 100644 --- a/lib/view/page/snippet/edit.dart +++ b/lib/view/page/snippet/edit.dart @@ -1,7 +1,7 @@ import 'package:after_layout/after_layout.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:toolbox/view/widget/input_field.dart'; import '../../../core/utils/ui.dart'; diff --git a/lib/view/page/ssh.dart b/lib/view/page/ssh.dart index 5cc1ea37..6b5ba2bc 100644 --- a/lib/view/page/ssh.dart +++ b/lib/view/page/ssh.dart @@ -6,7 +6,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:provider/provider.dart'; -import 'package:toolbox/core/utils/navigator.dart'; +import 'package:toolbox/core/extension/navigator.dart'; import 'package:xterm/xterm.dart' hide TerminalColors; import '../../core/utils/platform.dart'; diff --git a/lib/view/widget/input_field.dart b/lib/view/widget/input_field.dart index 5bdd57f5..46ee8b7f 100644 --- a/lib/view/widget/input_field.dart +++ b/lib/view/widget/input_field.dart @@ -8,7 +8,7 @@ class Input extends StatelessWidget { final int? minLines; final String? hint; final String? label; - final Function(String)? onSubmitted; + final void Function(String)? onSubmitted; final bool obscureText; final IconData? icon; final TextInputType? type; diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index 43f828de..7183ed08 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -26,7 +26,7 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - CC3C9C24336DBCBB13B1DD4E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 051B6E43AB66C836E65690B6 /* Pods_Runner.framework */; }; + 3B06435D86013FED76321AF8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9511BF8F638F8AEACFB475BD /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -53,8 +53,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 051B6E43AB66C836E65690B6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1B64E26251C2132C1FD3DE5F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; 33CC10ED2044A3C60003C045 /* server_box.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = server_box.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -69,10 +67,12 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 3EBAA16736A04B8FA45DF33F /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 444EFF4D60463B05BBDB9C0C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9511BF8F638F8AEACFB475BD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - E8FDB0F1B04D4A1C2983795D /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + B4C292940D0588699A5B6436 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + E1450961FD967E0CDCB70166 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -80,7 +80,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CC3C9C24336DBCBB13B1DD4E /* Pods_Runner.framework in Frameworks */, + 3B06435D86013FED76321AF8 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -105,7 +105,7 @@ 33CEB47122A05771004F2AC0 /* Flutter */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - 51D4AEDD40A46AA3AF8AF7AE /* Pods */, + FF9AA82BDB552F59097F9612 /* Pods */, ); sourceTree = ""; }; @@ -152,25 +152,25 @@ path = Runner; sourceTree = ""; }; - 51D4AEDD40A46AA3AF8AF7AE /* Pods */ = { - isa = PBXGroup; - children = ( - 1B64E26251C2132C1FD3DE5F /* Pods-Runner.debug.xcconfig */, - E8FDB0F1B04D4A1C2983795D /* Pods-Runner.release.xcconfig */, - 3EBAA16736A04B8FA45DF33F /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - 051B6E43AB66C836E65690B6 /* Pods_Runner.framework */, + 9511BF8F638F8AEACFB475BD /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; }; + FF9AA82BDB552F59097F9612 /* Pods */ = { + isa = PBXGroup; + children = ( + E1450961FD967E0CDCB70166 /* Pods-Runner.debug.xcconfig */, + B4C292940D0588699A5B6436 /* Pods-Runner.release.xcconfig */, + 444EFF4D60463B05BBDB9C0C /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -178,13 +178,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 33DCC8E03FB9B8627035A7B7 /* [CP] Check Pods Manifest.lock */, + 6A402DAACE84DB6BA6F12E1E /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - DE29B08A1EBC54F140840A8F /* [CP] Embed Pods Frameworks */, + 5E892DA063C97E6AD9FF2DA0 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -292,7 +292,24 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 33DCC8E03FB9B8627035A7B7 /* [CP] Check Pods Manifest.lock */ = { + 5E892DA063C97E6AD9FF2DA0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6A402DAACE84DB6BA6F12E1E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -314,23 +331,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - DE29B08A1EBC54F140840A8F /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */