Skip to content

Commit

Permalink
multiplatform filepicker
Browse files Browse the repository at this point in the history
  • Loading branch information
tuntorius committed Apr 3, 2023
1 parent 52fbcbc commit e7fcd85
Show file tree
Hide file tree
Showing 31 changed files with 601 additions and 82 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ just_audio/
.packages
.pub-cache/
.pub/
/build/
build/

# Web related

Expand Down
2 changes: 1 addition & 1 deletion ios/Podfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
platform :ios, '10.0'
platform :ios, '12.0'

# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
Expand Down
55 changes: 36 additions & 19 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ PODS:
- Flutter
- device_info_plus (0.0.1):
- Flutter
- file_picker (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_audio_query (0.0.1):
- Flutter
Expand All @@ -22,20 +24,25 @@ PODS:
- Flutter
- just_audio (0.0.1):
- Flutter
- mighty_ble (0.0.1):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- path_provider_ios (0.0.1):
- path_provider_foundation (0.0.1):
- Flutter
- "permission_handler (5.1.0+2)":
- FlutterMacOS
- permission_handler_apple (9.0.4):
- Flutter
- Protobuf (3.21.9)
- Protobuf (3.22.1)
- qr_utils (0.1.5):
- Flutter
- Sentry/HybridSDK (7.30.2)
- Sentry/HybridSDK (8.3.3):
- SentryPrivate (= 8.3.3)
- sentry_flutter (0.0.1):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 7.30.2)
- Sentry/HybridSDK (= 8.3.3)
- SentryPrivate (8.3.3)
- share_plus (0.0.1):
- Flutter
- url_launcher_ios (0.0.1):
Expand All @@ -48,15 +55,17 @@ DEPENDENCIES:
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- audio_waveform (from `.symlinks/plugins/audio_waveform/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_audio_query (from `.symlinks/plugins/flutter_audio_query/ios`)
- flutter_blue_plus (from `.symlinks/plugins/flutter_blue_plus/ios`)
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_midi_command (from `.symlinks/plugins/flutter_midi_command/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- mighty_ble (from `.symlinks/plugins/mighty_ble/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- qr_utils (from `.symlinks/plugins/qr_utils/ios`)
- sentry_flutter (from `.symlinks/plugins/sentry_flutter/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
Expand All @@ -67,6 +76,7 @@ SPEC REPOS:
trunk:
- Protobuf
- Sentry
- SentryPrivate

EXTERNAL SOURCES:
audio_picker:
Expand All @@ -77,6 +87,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/audio_waveform/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
flutter_audio_query:
Expand All @@ -89,12 +101,14 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_midi_command/ios"
just_audio:
:path: ".symlinks/plugins/just_audio/ios"
mighty_ble:
:path: ".symlinks/plugins/mighty_ble/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_ios:
:path: ".symlinks/plugins/path_provider_ios/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/ios"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
qr_utils:
:path: ".symlinks/plugins/qr_utils/ios"
sentry_flutter:
Expand All @@ -111,23 +125,26 @@ SPEC CHECKSUMS:
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
audio_waveform: 752f745d2fa83aa1171f18255db1395e278317ce
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
file_picker: 088e1a97eb2ed66964279fe39013ab8f23022a4d
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_audio_query: 45f1076a639975e198f4e822ac2c5e6e65b20f89
flutter_blue_plus: 6787777145d615de01828f3a9fa423c3c702f0b3
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_midi_command: 4acc18c6391c574d21f1d3a1cc40c7fe06ff461f
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
mighty_ble: 86cf1fc1c314039c8675fb5fba9f2a4ec96d710c
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
Protobuf: 02524ec14183fe08fb259741659e79683788158b
path_provider_foundation: c68054786f1b4f3343858c1e1d0caaded73f0be9
permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
Protobuf: d7f7c8329edf5eb8af65547a8ba3e9c1cee927d5
qr_utils: f8364c024ea259dfe0d88d4ba4f7b34984b7a61f
Sentry: 9be48e341494bc976c963b05aa4a8ca48308c684
sentry_flutter: 544e6376e35b00eef9f0864f8bb7f10a0e204993
Sentry: 8ffc397d98fe58d693e73959b26ed0eaee55646a
sentry_flutter: 5028afacfa875785cb0e3682aece171fcd9dc0d5
SentryPrivate: bf776a47a131648f5023097215987b40fbd47025
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de
url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f

PODFILE CHECKSUM: fe0e1ee7f3d1f7d00b11b474b62dd62134535aea
PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048

COCOAPODS: 1.11.3
COCOAPODS: 1.12.0
4 changes: 3 additions & 1 deletion ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objectVersion = 54;
objects = {

/* Begin PBXBuildFile section */
Expand Down Expand Up @@ -201,6 +201,7 @@
/* Begin PBXShellScriptBuildPhase section */
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
Expand Down Expand Up @@ -237,6 +238,7 @@
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
Expand Down
4 changes: 4 additions & 0 deletions ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,11 @@
<string>This app uses camera to scan QR codes that contain preset data for the connected amplifier</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app wants to use your photos.</string>
<key>NSFileProviderDomainUsageDescription</key>
<string>Mightier Amp needs files access to let you backup your presets.</string>
<key>CADisableMinimumFrameDurationOnPhone</key>
<true/>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
</dict>
</plist>
34 changes: 19 additions & 15 deletions lib/UI/widgets/presets/presetList.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:drag_and_drop_lists/drag_and_drop_list_interface.dart';
import 'package:drag_and_drop_lists/drag_and_drop_lists.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:mighty_plug_manager/UI/toneshare/toneshare_main.dart';
Expand Down Expand Up @@ -101,20 +102,20 @@ class _PresetListState extends State<PresetList>
],
),
),
if (!PlatformUtils.isIOS)
PopupMenuItem(
value: CategoryMenuActions.Export,
child: Row(
children: <Widget>[
Icon(
Icons.save_alt,
color: AppThemeConfig.contextMenuIconColor,
),
const SizedBox(width: 5),
const Text("Export Category"),
],
),
)
//if (!PlatformUtils.isIOS)
PopupMenuItem(
value: CategoryMenuActions.Export,
child: Row(
children: <Widget>[
Icon(
Icons.save_alt,
color: AppThemeConfig.contextMenuIconColor,
),
const SizedBox(width: 5),
const Text("Export Category"),
],
),
)
];

NuxDevice get device => NuxDeviceControl.instance().device;
Expand Down Expand Up @@ -453,7 +454,10 @@ class _PresetListState extends State<PresetList>
String? data = PresetsStorage().presetsToJson(category);

if (data != null) {
saveFileString("application/octet-stream", "$category.nuxpreset", data);
if (!PlatformUtils.isIOS)
saveFileString("application/octet-stream", "$category.nuxpreset", data);
else
FilePicker()..saveFile(data);
} else {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
backgroundColor: Colors.deepOrange,
Expand Down
30 changes: 30 additions & 0 deletions plugins/file_picker/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
.packages
build/
33 changes: 33 additions & 0 deletions plugins/file_picker/.metadata
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
channel: stable

project_type: plugin

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
- platform: android
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
- platform: ios
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57

# User provided section

# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
3 changes: 3 additions & 0 deletions plugins/file_picker/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 0.0.1

* TODO: Describe initial release.
1 change: 1 addition & 0 deletions plugins/file_picker/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TODO: Add your license here.
15 changes: 15 additions & 0 deletions plugins/file_picker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# file_picker

A new Flutter plugin project.

## Getting Started

This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code for
Android and/or iOS.

For help getting started with Flutter development, view the
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.

4 changes: 4 additions & 0 deletions plugins/file_picker/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
include: package:flutter_lints/flutter.yaml

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
9 changes: 9 additions & 0 deletions plugins/file_picker/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.cxx
46 changes: 46 additions & 0 deletions plugins/file_picker/android/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
group 'com.example.file_picker'
version '1.0-SNAPSHOT'

buildscript {
ext.kotlin_version = '1.6.10'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

allprojects {
repositories {
google()
mavenCentral()
}
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

android {
compileSdkVersion 31

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = '1.8'
}

sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}

defaultConfig {
minSdkVersion 16
}
}
1 change: 1 addition & 0 deletions plugins/file_picker/android/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rootProject.name = 'file_picker'
3 changes: 3 additions & 0 deletions plugins/file_picker/android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.file_picker">
</manifest>
Loading

0 comments on commit e7fcd85

Please sign in to comment.