Открыть боковую панель
Aurora OS
Flutter
Flutter Community Plugins
pickers_aurora
Коммиты
df7d95f5
Коммит
df7d95f5
создал
Фев 27, 2025
по автору
Зарубин Виталий Викторович
Просмотр файлов
[flutter_image_picker_aurora][feature] Implement image_picker plugin.
владелец
82a8de62
Изменения
45
Развернуть все
Скрыть пробелы
Построчно
Рядом
packages/flutter_image_picker_aurora/example/lib/main.dart
0 → 100644
Просмотр файла @
df7d95f5
// SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_image_picker_aurora/flutter_image_picker_aurora.dart'
;
import
'package:image_picker/image_picker.dart'
;
final
navigatorKey
=
GlobalKey
<
NavigatorState
>();
void
main
()
{
FlutterImagePickerAurora
.
setGlobalKey
(
navigatorKey
);
runApp
(
const
MyApp
());
}
class
MyApp
extends
StatefulWidget
{
const
MyApp
({
super
.
key
});
@override
State
<
MyApp
>
createState
()
=
>
_MyAppState
();
}
class
_MyAppState
extends
State
<
MyApp
>
{
final
ImagePicker
picker
=
ImagePicker
();
final
List
<
dynamic
>
_data
=
[];
Future
<
void
>
_pickVideo
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickVideo
(
source
:
ImageSource
.
gallery
)
;
// Show response
_updateData
([
file
]);
}
Future
<
void
>
_pickImage
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickImage
(
source
:
ImageSource
.
gallery
)
;
// Show response
_updateData
([
file
]);
}
Future
<
void
>
_pickImageResize
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickImage
(
source
:
ImageSource
.
gallery
,
maxWidth:
200
,
maxHeight:
200
,
imageQuality:
90
,
)
;
// Show response
_updateData
([
file
]);
// Remove resized files
_removeResize
([
file
]);
}
Future
<
void
>
_pickImages
()
async
{
// Clear print data
_data
.
clear
();
// Plugin exec
final
List
<
XFile
>
files
=
await
picker
.
pickMultiImage
(
limit:
2
);
// Show response
_updateData
(
files
);
}
Future
<
void
>
_pickImageOrVideo
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickMedia
();
// Show response
_updateData
([
file
]);
}
Future
<
void
>
_pickImagesOrVideos
()
async
{
// Plugin exec
final
List
<
XFile
>
files
=
await
picker
.
pickMultipleMedia
();
// Show response
_updateData
(
files
);
}
Future
<
void
>
_capturePhoto
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickImage
(
source
:
ImageSource
.
camera
)
;
// Show response
_updateData
([
file
]);
}
Future
<
void
>
_captureVideo
()
async
{
// Plugin exec
final
XFile
?
file
=
await
picker
.
pickVideo
(
source
:
ImageSource
.
camera
)
;
// Show response
_updateData
([
file
]);
}
void
_updateData
(
List
<
XFile
?
>
files
)
{
// Clear print data
_data
.
clear
();
// Update data
_data
.
addAll
(
files
.
whereType
<
XFile
>()
.
map
((
e
)
=
>
{
'name'
:
e
.
name
,
'mimeType'
:
e
.
mimeType
,
'path'
:
e
.
path
}));
// Update view
setState
(()
{});
}
Future
<
void
>
_removeResize
(
List
<
XFile
?
>
files
)
async
{
for
(
final
file
in
files
.
whereType
<
XFile
>()
.
map
((
e
)
=
>
File
(
e
.
path
)))
{
await
file
.
delete
();
}
}
@override
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
navigatorKey:
navigatorKey
,
home:
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'Flutter Image Picker'
),
),
body:
SingleChildScrollView
(
child:
Container
(
padding:
const
EdgeInsets
.
all
(
10
),
child:
Column
(
children:
[
Text
(
'A Flutter plugin for picking images from the image library, and taking new pictures with the camera.'
,
textAlign:
TextAlign
.
center
,
),
const
Divider
(
height:
36
),
Text
(
_data
.
isEmpty
?
"Empty"
:
_data
.
toString
()),
const
Divider
(
height:
36
),
ElevatedButton
(
child:
const
Text
(
'Pick Video'
),
onPressed:
()
async
=
>
await
_pickVideo
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Pick Image'
),
onPressed:
()
async
=
>
await
_pickImage
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Pick Image with resize'
),
onPressed:
()
async
=
>
await
_pickImageResize
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Pick Images (limit: 2)'
),
onPressed:
()
async
=
>
await
_pickImages
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Pick Image or Video'
),
onPressed:
()
async
=
>
await
_pickImageOrVideo
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Pick Images or Videos'
),
onPressed:
()
async
=
>
await
_pickImagesOrVideos
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Capture Photo'
),
onPressed:
()
async
=
>
await
_capturePhoto
(),
),
SizedBox
(
height:
16
),
ElevatedButton
(
child:
const
Text
(
'Capture Video'
),
onPressed:
()
async
=
>
await
_captureVideo
(),
),
],
),
),
),
),
);
}
}
packages/flutter_image_picker_aurora/example/pubspec.lock
0 → 100644
Просмотр файла @
df7d95f5
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
sha256: "6199c74e3db4fbfbd04f66d739e72fe11c8a8957d5f219f1f4482dbde6420b5a"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
async:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
camera:
dependency: transitive
description:
name: camera
sha256: "413d2b34fe28496c35c69ede5b232fb9dd5ca2c3a4cb606b14efc1c7546cc8cb"
url: "https://pub.dev"
source: hosted
version: "0.11.1"
camera_android_camerax:
dependency: transitive
description:
name: camera_android_camerax
sha256: "7cc6adf1868bdcf4e63a56b24b41692dfbad2bec1cdceea451c77798f6a605c3"
url: "https://pub.dev"
source: hosted
version: "0.6.13"
camera_aurora:
dependency: transitive
description:
path: "packages/camera_aurora"
ref: "aurora-camera_aurora-0.6.0"
resolved-ref: "3993b60429014d12475bcc639c20a5d6693b1c24"
url: "https://gitlab.com/omprussia/flutter/packages.git"
source: git
version: "0.6.0"
camera_avfoundation:
dependency: transitive
description:
name: camera_avfoundation
sha256: "1eeb9ce7c9a397e312343fd7db337d95f35c3e65ad5a62ff637c8abce5102b98"
url: "https://pub.dev"
source: hosted
version: "0.9.18+8"
camera_platform_interface:
dependency: transitive
description:
name: camera_platform_interface
sha256: "953e7baed3a7c8fae92f7200afeb2be503ff1a17c3b4e4ed7b76f008c2810a31"
url: "https://pub.dev"
source: hosted
version: "2.9.0"
camera_web:
dependency: transitive
description:
name: camera_web
sha256: "595f28c89d1fb62d77c73c633193755b781c6d2e0ebcd8dc25b763b514e6ba8f"
url: "https://pub.dev"
source: hosted
version: "0.3.5"
characters:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
clock:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
url: "https://pub.dev"
source: hosted
version: "1.19.0"
cross_file:
dependency: transitive
description:
name: cross_file
sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
url: "https://pub.dev"
source: hosted
version: "0.3.4+2"
crypto:
dependency: transitive
description:
name: crypto
sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855"
url: "https://pub.dev"
source: hosted
version: "3.0.6"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
url: "https://pub.dev"
source: hosted
version: "1.0.8"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6"
url: "https://pub.dev"
source: hosted
version: "2.1.3"
file_selector:
dependency: transitive
description:
name: file_selector
sha256: "5019692b593455127794d5718304ff1ae15447dea286cdda9f0db2a796a1b828"
url: "https://pub.dev"
source: hosted
version: "1.0.3"
file_selector_android:
dependency: transitive
description:
name: file_selector_android
sha256: "98ac58e878b05ea2fdb204e7f4fc4978d90406c9881874f901428e01d3b18fbc"
url: "https://pub.dev"
source: hosted
version: "0.5.1+12"
file_selector_ios:
dependency: transitive
description:
name: file_selector_ios
sha256: "94b98ad950b8d40d96fee8fa88640c2e4bd8afcdd4817993bd04e20310f45420"
url: "https://pub.dev"
source: hosted
version: "0.5.3+1"
file_selector_linux:
dependency: transitive
description:
name: file_selector_linux
sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33"
url: "https://pub.dev"
source: hosted
version: "0.9.3+2"
file_selector_macos:
dependency: transitive
description:
name: file_selector_macos
sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc"
url: "https://pub.dev"
source: hosted
version: "0.9.4+2"
file_selector_platform_interface:
dependency: transitive
description:
name: file_selector_platform_interface
sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b
url: "https://pub.dev"
source: hosted
version: "2.6.2"
file_selector_web:
dependency: transitive
description:
name: file_selector_web
sha256: c4c0ea4224d97a60a7067eca0c8fd419e708ff830e0c83b11a48faf566cec3e7
url: "https://pub.dev"
source: hosted
version: "0.9.4+2"
file_selector_windows:
dependency: transitive
description:
name: file_selector_windows
sha256: "8f5d2f6590d51ecd9179ba39c64f722edc15226cc93dcc8698466ad36a4a85a4"
url: "https://pub.dev"
source: hosted
version: "0.9.3+3"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_image_picker_aurora:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "0.0.1"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.dev"
source: hosted
version: "5.0.0"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e"
url: "https://pub.dev"
source: hosted
version: "2.0.24"
flutter_selector_aurora:
dependency: transitive
description:
path: "packages/flutter_selector_aurora"
ref: "aurora-flutter_selector_aurora-0.0.1"
resolved-ref: "82a8de624daa53ad1cb9f601c7aad6a4511d85f1"
url: "git@os-git.omprussia.ru:oss/flutter/flutter-community-plugins/pickers_aurora.git"
source: git
version: "0.0.1"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: transitive
description:
name: http
sha256: fe7ab022b76f3034adc518fb6ea04a82387620e19977665ea18d30a1cf43442f
url: "https://pub.dev"
source: hosted
version: "1.3.0"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.dev"
source: hosted
version: "4.1.2"
image:
dependency: transitive
description:
name: image
sha256: "8346ad4b5173924b5ddddab782fc7d8a6300178c8b1dc427775405a01701c4a6"
url: "https://pub.dev"
source: hosted
version: "4.5.2"
image_picker:
dependency: "direct main"
description:
name: image_picker
sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
sha256: b62d34a506e12bb965e824b6db4fbf709ee4589cf5d3e99b45ab2287b008ee0c
url: "https://pub.dev"
source: hosted
version: "0.8.12+20"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83"
url: "https://pub.dev"
source: hosted
version: "3.0.6"
image_picker_ios:
dependency: transitive
description:
name: image_picker_ios
sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100"
url: "https://pub.dev"
source: hosted
version: "0.8.12+2"
image_picker_linux:
dependency: transitive
description:
name: image_picker_linux
sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa"
url: "https://pub.dev"
source: hosted
version: "0.2.1+1"
image_picker_macos:
dependency: transitive
description:
name: image_picker_macos
sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1"
url: "https://pub.dev"
source: hosted
version: "0.2.1+2"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0"
url: "https://pub.dev"
source: hosted
version: "2.10.1"
image_picker_windows:
dependency: transitive
description:
name: image_picker_windows
sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb"
url: "https://pub.dev"
source: hosted
version: "0.2.1+1"
intl:
dependency: transitive
description:
name: intl
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
url: "https://pub.dev"
source: hosted
version: "0.20.2"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
url: "https://pub.dev"
source: hosted
version: "10.0.7"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
url: "https://pub.dev"
source: hosted
version: "3.0.8"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
lints:
dependency: transitive
description:
name: lints
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
url: "https://pub.dev"
source: hosted
version: "5.1.1"
matcher:
dependency: transitive
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.15.0"
mime:
dependency: transitive
description:
name: mime
sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
path:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
path_provider:
dependency: transitive
description:
name: path_provider
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
url: "https://pub.dev"
source: hosted
version: "2.1.5"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
url: "https://pub.dev"
source: hosted
version: "2.2.15"
path_provider_aurora:
dependency: transitive
description:
path: "packages/path_provider_aurora"
ref: "aurora-path_provider_aurora-0.6.0"
resolved-ref: "82e13309171cb454aae989dbbde477282dfa7e20"
url: "https://gitlab.com/omprussia/flutter/packages.git"
source: git
version: "0.6.0"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
url: "https://pub.dev"
source: hosted
version: "2.3.0"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
url: "https://pub.dev"
source: hosted
version: "6.0.2"
platform:
dependency: transitive
description:
name: platform
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.dev"
source: hosted
version: "3.1.6"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
posix:
dependency: transitive
description:
name: posix
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
url: "https://pub.dev"
source: hosted
version: "6.0.1"
services_aurora:
dependency: transitive
description:
path: "."
ref: "aurora-0.9.0"
resolved-ref: b8881eadd9081a04380496b20867feb45b1225e2
url: "https://gitlab.com/omprussia/flutter/flutter-community-plugins/services_aurora.git"
source: git
version: "0.9.0"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
source_span:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
version: "2.1.2"
stream_transform:
dependency: transitive
description:
name: stream_transform
sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
url: "https://pub.dev"
source: hosted
version: "0.7.3"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
vm_service:
dependency: transitive
description:
name: vm_service
sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
url: "https://pub.dev"
source: hosted
version: "14.3.0"
web:
dependency: transitive
description:
name: web
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
url: "https://pub.dev"
source: hosted
version: "1.1.0"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
xml:
dependency: transitive
description:
name: xml
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
url: "https://pub.dev"
source: hosted
version: "6.5.0"
sdks:
dart: ">=3.6.0 <4.0.0"
flutter: ">=3.27.0"
packages/flutter_image_picker_aurora/example/pubspec.yaml
0 → 100644
Просмотр файла @
df7d95f5
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
name
:
flutter_image_picker_aurora_example
description
:
"
Demonstrates
how
to
use
the
flutter_image_picker_aurora
plugin."
publish_to
:
'
none'
version
:
1.0.0+1
environment
:
sdk
:
^3.6.0
dependencies
:
flutter
:
sdk
:
flutter
image_picker
:
^1.1.2
flutter_image_picker_aurora
:
path
:
../
cupertino_icons
:
^1.0.8
dev_dependencies
:
flutter_test
:
sdk
:
flutter
flutter_lints
:
^5.0.0
flutter
:
uses-material-design
:
true
packages/flutter_image_picker_aurora/lib/camera_screen.dart
0 → 100644
Просмотр файла @
df7d95f5
// SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
'dart:async'
;
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:camera/camera.dart'
;
import
'package:path_provider/path_provider.dart'
;
import
'package:path/path.dart'
as
p
;
enum
CameraScreenType
{
photo
,
video
}
class
CameraScreen
extends
StatefulWidget
{
const
CameraScreen
({
super
.
key
,
required
this
.
type
,
});
final
CameraScreenType
type
;
// Select path any pages
static
XFile
?
_file
;
static
void
clear
()
{
CameraScreen
.
_file
=
null
;
}
static
XFile
?
getResult
()
{
return
CameraScreen
.
_file
;
}
@override
State
<
CameraScreen
>
createState
()
=
>
_SelectorScreenState
();
}
class
_SelectorScreenState
extends
State
<
CameraScreen
>
{
late
CameraController
_controller
;
late
List
<
CameraDescription
>
_cameras
;
bool
_loading
=
true
;
@override
void
initState
()
{
super
.
initState
();
_initCamera
()
.
then
((
_
)
{
setState
(()
{
_loading
=
false
;
});
})
.
catchError
((
_
)
{
throw
Exception
(
"Error init camera"
);
});
}
@override
void
dispose
()
{
_controller
.
dispose
();
super
.
dispose
();
}
@override
void
setState
(
VoidCallback
fn
)
{
if
(
!
mounted
)
return
;
super
.
setState
(
fn
);
}
Future
<
void
>
_initCamera
()
async
{
_cameras
=
await
availableCameras
();
if
(
_cameras
.
isEmpty
)
{
throw
Future
.
error
(
'No cameras found.'
);
}
_controller
=
CameraController
(
_cameras
[
0
],
ResolutionPreset
.
max
);
await
_controller
.
initialize
();
}
Future
<
void
>
_flipCamera
()
async
{
setState
(()
=
>
_loading
=
true
);
await
_controller
.
setDescription
(
_cameras
.
firstWhere
((
camera
)
=
>
camera
.
name
!=
_controller
.
description
.
name
));
setState
(()
=
>
_loading
=
false
);
}
Future
<
XFile
?
>
_takePhoto
()
async
{
setState
(()
=
>
_loading
=
true
);
final
picture
=
await
_controller
.
takePicture
();
final
bytes
=
await
picture
.
readAsBytes
();
final
directory
=
await
getExternalStorageDirectories
(
type:
StorageDirectory
.
pictures
);
final
fileName
=
'
${DateTime.now().millisecondsSinceEpoch}
.jpg'
;
final
file
=
await
File
(
p
.
join
(
directory
!
[
0
]
.
path
,
fileName
))
.
writeAsBytes
(
bytes
);
setState
(()
=
>
_loading
=
false
);
return
XFile
(
file
.
path
);
}
Future
<
void
>
_startRecordVideo
()
async
{
if
(
!
_controller
.
value
.
isRecordingVideo
)
{
setState
(()
=
>
_loading
=
true
);
await
_controller
.
startVideoRecording
();
setState
(()
=
>
_loading
=
false
);
}
}
Future
<
XFile
?
>
_stopRecordVideo
()
async
{
setState
(()
=
>
_loading
=
true
);
if
(
_controller
.
value
.
isRecordingVideo
)
{
final
file
=
await
_controller
.
stopVideoRecording
();
setState
(()
=
>
_loading
=
false
);
return
file
;
}
else
{
throw
Exception
(
'The recording has already stopped.'
);
}
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
actions:
[
if
(
CameraScreen
.
_file
!=
null
)
Padding
(
padding:
EdgeInsets
.
only
(
right:
8.0
),
child:
IconButton
(
icon:
const
Icon
(
Icons
.
done
),
tooltip:
'Done'
,
onPressed:
()
=
>
Navigator
.
pop
(
context
),
),
)
],
),
body:
SizedBox
.
expand
(
child:
Container
(
color:
Colors
.
black
,
child:
Center
(
child:
_loading
?
const
Center
(
child:
CircularProgressIndicator
())
:
cameraPreview
(),
),
),
),
);
}
Widget
cameraPreview
()
{
return
Stack
(
children:
[
Center
(
child:
_controller
.
buildPreview
()),
Padding
(
padding:
const
EdgeInsets
.
all
(
16
),
child:
Column
(
children:
[
const
Spacer
(),
if
(
_controller
.
value
.
isRecordingVideo
)
controlsVideoRecording
()
else
controlsPreview
()
],
),
),
],
);
}
Widget
controlsPreview
()
{
return
Row
(
mainAxisSize:
MainAxisSize
.
max
,
mainAxisAlignment:
MainAxisAlignment
.
end
,
children:
[
IconButton
.
filled
(
onPressed:
_flipCamera
,
icon:
const
Icon
(
Icons
.
flip_camera_ios
),
),
const
Spacer
(),
if
(
widget
.
type
==
CameraScreenType
.
video
)
IconButton
.
outlined
(
onPressed:
_startRecordVideo
,
icon:
const
Icon
(
Icons
.
radio_button_checked
),
color:
Theme
.
of
(
context
)
.
colorScheme
.
primary
,
style:
OutlinedButton
.
styleFrom
(
side:
BorderSide
(
width:
2.0
,
color:
Theme
.
of
(
context
)
.
colorScheme
.
primary
,
),
),
),
if
(
widget
.
type
==
CameraScreenType
.
photo
)
IconButton
.
filled
(
onPressed:
()
async
{
CameraScreen
.
_file
=
await
_takePhoto
();
},
icon:
const
Icon
(
Icons
.
photo_camera
),
),
],
);
}
Widget
controlsVideoRecording
()
{
return
Row
(
mainAxisSize:
MainAxisSize
.
max
,
mainAxisAlignment:
MainAxisAlignment
.
end
,
children:
[
const
Spacer
(),
// Button stop record video
IconButton
.
outlined
(
onPressed:
()
async
{
CameraScreen
.
_file
=
await
_stopRecordVideo
();
},
icon:
const
Icon
(
Icons
.
stop_circle
),
color:
Colors
.
red
,
style:
OutlinedButton
.
styleFrom
(
side:
const
BorderSide
(
width:
2.0
,
color:
Colors
.
red
,
),
),
),
],
);
}
}
packages/flutter_image_picker_aurora/lib/ffi/flutter_image_picker_aurora_lib.dart
0 → 100644
Просмотр файла @
df7d95f5
// SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
'dart:convert'
;
import
'dart:ffi'
;
import
'dart:io'
;
import
"package:ffi/ffi.dart"
;
import
'package:flutter_image_picker_aurora/ffi/flutter_image_picker_aurora_lib_bindings.dart'
;
import
'package:flutter_image_picker_aurora/ffi/response_model.dart'
;
import
'package:image_picker_platform_interface/image_picker_platform_interface.dart'
;
import
'package:services_aurora/services_aurora.dart'
;
/// Get data folders
Future
<
ResponseModel
?
>
resizeImages
({
required
List
<
XFile
>
files
,
required
double
?
maxWidth
,
required
double
?
maxHeight
,
required
int
?
imageQuality
,
})
=
>
using
((
Arena
arena
)
async
{
// To char
final
cRequest
=
json
.
encode
({
'maxHeight'
:
maxHeight
,
'maxWidth'
:
maxWidth
,
'imageQuality'
:
imageQuality
,
'filePaths'
:
files
.
map
((
e
)
=
>
e
.
path
)
.
toList
(),
})
.
toNativeUtf8
()
.
cast
<
Char
>();
// Method Execution
final
pointer
=
_bindings
.
resize_images
(
cRequest
);
// Free memory
arena
.
using
(
cRequest
,
calloc
.
free
);
// Returning the result
final
data
=
pointer
.
cast
<
Utf8
>()
.
toDartString
();
if
(
data
==
''
)
{
return
null
;
}
return
ResponseModel
.
fromJson
(
jsonDecode
(
data
));
});
const
String
_libName
=
'flutter_image_picker_aurora_lib'
;
/// The dynamic library in which the symbols for [ExampleRustBindings] can be found.
final
DynamicLibrary
_dylib
=
()
{
ServicesAurora
.
registerWith
();
if
(
ServicesAurora
.
isAurora
)
{
return
DynamicLibrary
.
open
(
'lib
$_libName
.so'
);
}
throw
UnsupportedError
(
'Unknown platform:
${Platform.operatingSystem}
'
);
}();
/// The bindings to the native functions in [_dylib].
final
FlutterImagePickerLib
_bindings
=
FlutterImagePickerLib
(
_dylib
);
packages/flutter_image_picker_aurora/lib/ffi/flutter_image_picker_aurora_lib_bindings.dart
0 → 100644
Просмотр файла @
df7d95f5
Это отличие свёрнуто
Нажмите, чтобы развернуть
packages/flutter_image_picker_aurora/lib/ffi/response_model.dart
0 → 100644
Просмотр файла @
df7d95f5
import
'dart:convert'
;
/// Base response model
class
ResponseModel
{
late
bool
state
;
final
List
<
ResponseFileModel
>
files
=
[];
ResponseModel
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
if
(
!
[
json
.
containsKey
(
"state"
),
json
.
containsKey
(
"files"
)]
.
firstWhere
((
k
)
=
>
!
k
,
orElse:
()
=
>
true
))
{
throw
Exception
(
"Error parse json."
);
}
state
=
json
[
'state'
];
(
json
[
"files"
]
as
List
)
.
map
((
e
)
=
>
ResponseFileModel
.
fromJson
(
e
))
.
forEach
((
e
)
=
>
files
.
add
(
e
));
}
@override
String
toString
()
{
return
jsonEncode
({
"state"
:
state
,
"files"
:
files
,
});
}
}
/// File output data
class
ResponseFileModel
{
late
String
name
;
late
String
path
;
late
String
mime
;
late
int
length
;
late
DateTime
lastModified
;
ResponseFileModel
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
if
(
!
[
json
.
containsKey
(
"name"
),
json
.
containsKey
(
"path"
),
json
.
containsKey
(
"mime"
),
json
.
containsKey
(
"length"
),
json
.
containsKey
(
"last_modified"
),
]
.
firstWhere
((
k
)
=
>
!
k
,
orElse:
()
=
>
true
))
{
throw
Exception
(
"Error parse json."
);
}
name
=
json
[
'name'
];
path
=
json
[
'path'
];
mime
=
json
[
'mime'
];
length
=
json
[
'length'
];
lastModified
=
DateTime
.
fromMillisecondsSinceEpoch
((
json
[
'last_modified'
]
as
int
)
*
1000
);
}
@override
String
toString
()
{
return
jsonEncode
({
"name"
:
name
,
"path"
:
path
,
"mime"
:
mime
,
"length"
:
length
,
"lastModified"
:
lastModified
,
});
}
}
packages/flutter_image_picker_aurora/lib/flutter_image_picker_aurora.dart
0 → 100644
Просмотр файла @
df7d95f5
// SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import
'package:file_selector/file_selector.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_image_picker_aurora/camera_screen.dart'
;
import
'package:flutter_image_picker_aurora/ffi/flutter_image_picker_aurora_lib.dart'
;
import
'package:flutter_selector_aurora/flutter_selector_aurora.dart'
;
import
'package:image_picker_platform_interface/image_picker_platform_interface.dart'
;
/// An implementation of [ImagePickerPlatform] for Aurora.
class
FlutterImagePickerAurora
extends
ImagePickerPlatform
{
/// Registers the Aurora implementation.
static
void
registerWith
()
{
ImagePickerPlatform
.
instance
=
FlutterImagePickerAurora
();
}
/// Context is required to implement the Flutter plugin
///
/// ```dart
/// final navigatorKey = GlobalKey<NavigatorState>();
///
/// MaterialApp(
/// navigatorKey: navigatorKey,
/// );
/// ```
static
GlobalKey
<
NavigatorState
>
?
_key
;
/// Set navigation global key
static
void
setGlobalKey
(
GlobalKey
<
NavigatorState
>
key
)
{
_key
=
key
;
FlutterSelectorAurora
.
setGlobalKey
(
key
);
}
/// Get current context
static
BuildContext
get
_context
{
if
(
_key
?.
currentContext
==
null
)
{
throw
Exception
(
"You haven't provided the context."
);
}
return
_key
!.
currentContext
!
;
}
/// BMP, GIF, ICO, JPEG, PNG, WebP
final
mimeImages
=
<
String
>[
'image/bmp'
,
'image/gif'
,
'image/x-icon'
,
'image/jpeg'
,
'image/png'
,
'image/webp'
,
];
final
mimeVideos
=
<
String
>[
// avi
'application/x-troff-msvideo'
,
'video/avi'
,
'video/msvideo'
,
'video/x-msvideo'
,
// mov
'video/quicktime'
,
'video/x-quicktime'
,
'image/mov'
,
'audio/aiff'
,
'audio/x-midi'
,
'audio/x-wav'
,
// mp4
'video/mp4'
,
'application/mp4'
,
// ogg
'audio/ogg'
,
'video/ogg'
,
// wmv
'video/x-ms-wmv'
,
'video/x-ms-asf'
,
// webm
'video/webm'
,
'audio/webm'
,
];
/// Pick image
/// Pick image with resize
/// Capture photo
@override
Future
<
XFile
?
>
getImageFromSource
({
required
ImageSource
source
,
ImagePickerOptions
options
=
const
ImagePickerOptions
(),
})
async
{
if
(
source
==
ImageSource
.
camera
)
{
return
await
_openCamera
(
CameraScreenType
.
photo
)
;
}
else
{
final
file
=
await
openFile
(
acceptedTypeGroups:
[
XTypeGroup
(
label:
'images'
,
mimeTypes:
mimeImages
,
)
])
;
if
(
file
==
null
)
{
return
null
;
}
final
imagesResized
=
await
_resizeImage
(
files:
[
file
],
maxWidth:
options
.
maxWidth
,
maxHeight:
options
.
maxHeight
,
imageQuality:
options
.
imageQuality
);
return
imagesResized
.
isEmpty
?
null
:
imagesResized
.
firstOrNull
;
}
}
/// Pick images
@override
Future
<
List
<
XFile
>>
getMultiImageWithOptions
({
MultiImagePickerOptions
options
=
const
MultiImagePickerOptions
(),
})
async
{
FlutterSelectorAurora
.
setLimit
(
options
.
limit
);
final
files
=
await
openFiles
(
acceptedTypeGroups:
[
XTypeGroup
(
label:
'images'
,
mimeTypes:
mimeImages
,
)
]);
FlutterSelectorAurora
.
setLimit
(
null
);
final
imagesResized
=
await
_resizeImage
(
files:
files
,
maxWidth:
options
.
imageOptions
.
maxWidth
,
maxHeight:
options
.
imageOptions
.
maxHeight
,
imageQuality:
options
.
imageOptions
.
imageQuality
);
return
imagesResized
;
}
/// Pick image or video
/// Pick images or videos
@override
Future
<
List
<
XFile
>>
getMedia
({
required
MediaOptions
options
,
})
async
{
List
<
XFile
>
images
=
[];
List
<
XFile
>
videos
=
[];
if
(
options
.
allowMultiple
)
{
FlutterSelectorAurora
.
setLimit
(
options
.
limit
);
final
files
=
await
openFiles
(
acceptedTypeGroups:
[
XTypeGroup
(
label:
'media'
,
mimeTypes:
mimeImages
+
mimeVideos
,
)
]);
FlutterSelectorAurora
.
setLimit
(
null
);
for
(
final
file
in
files
)
{
if
(
mimeImages
.
contains
(
file
.
mimeType
))
{
images
.
add
(
file
);
}
else
{
videos
.
add
(
file
);
}
}
}
else
{
final
file
=
await
openFile
(
acceptedTypeGroups:
[
XTypeGroup
(
label:
'media'
,
mimeTypes:
mimeImages
+
mimeVideos
,
)
]);
if
(
file
==
null
)
{
return
[];
}
if
(
mimeImages
.
contains
(
file
.
mimeType
))
{
images
.
add
(
file
);
}
else
{
videos
.
add
(
file
);
}
}
final
imagesResized
=
await
_resizeImage
(
files:
images
,
maxWidth:
options
.
imageOptions
.
maxWidth
,
maxHeight:
options
.
imageOptions
.
maxHeight
,
imageQuality:
options
.
imageOptions
.
imageQuality
);
return
imagesResized
+
videos
;
}
/// Pick video
/// Capture video
@override
Future
<
XFile
?
>
getVideo
({
required
ImageSource
source
,
CameraDevice
preferredCameraDevice
=
CameraDevice
.
rear
,
Duration
?
maxDuration
,
})
async
{
if
(
source
==
ImageSource
.
camera
)
{
return
await
_openCamera
(
CameraScreenType
.
video
)
;
}
else
{
return
openFile
(
acceptedTypeGroups:
[
XTypeGroup
(
label:
'videos'
,
mimeTypes:
mimeVideos
,
)
])
;
}
}
/// Resize image options
Future
<
List
<
XFile
>>
_resizeImage
({
required
List
<
XFile
>
?
files
,
required
double
?
maxWidth
,
required
double
?
maxHeight
,
required
int
?
imageQuality
,
})
async
{
if
(
files
==
null
)
{
return
[];
}
if
(
maxWidth
==
null
&&
maxHeight
==
null
)
{
return
files
;
}
final
result
=
await
resizeImages
(
files:
files
,
maxWidth:
maxWidth
,
maxHeight:
maxHeight
,
imageQuality:
imageQuality
,
);
if
(
result
==
null
||
result
.
state
==
false
)
{
throw
StateError
(
'Failed to modify data'
);
}
List
<
XFile
>
?
resultFiles
=
[];
for
(
final
file
in
result
.
files
)
{
resultFiles
.
add
(
XFile
(
file
.
path
,
mimeType:
file
.
mime
,
name:
file
.
name
,
length:
file
.
length
,
lastModified:
file
.
lastModified
,
));
}
return
resultFiles
;
}
/// Camera screen
Future
<
XFile
?
>
_openCamera
(
CameraScreenType
type
)
async
{
try
{
CameraScreen
.
clear
();
await
Navigator
.
of
(
_context
)
.
push
(
MaterialPageRoute
(
builder:
(
context
)
=
>
CameraScreen
(
type:
type
)));
return
CameraScreen
.
getResult
();
}
catch
(
e
)
{
return
null
;
}
}
}
packages/flutter_image_picker_aurora/pubspec.yaml
0 → 100644
Просмотр файла @
df7d95f5
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
name
:
flutter_image_picker_aurora
description
:
"
A
Flutter
plugin
for
picking
images
from
the
image
library,
and
taking
new
pictures
with
the
camera."
version
:
0.0.1
publish_to
:
'
none'
environment
:
sdk
:
^3.6.0
flutter
:
'
>=3.3.0'
dependencies
:
ffi
:
^2.1.3
flutter
:
sdk
:
flutter
intl
:
^0.20.2
plugin_platform_interface
:
^2.0.2
image_picker_platform_interface
:
^2.10.0
path
:
^1.9.0
path_provider
:
^2.0.15
path_provider_aurora
:
git
:
url
:
https://gitlab.com/omprussia/flutter/packages.git
ref
:
aurora-path_provider_aurora-0.6.0
path
:
packages/path_provider_aurora
camera
:
^0.11.0+2
camera_aurora
:
git
:
url
:
https://gitlab.com/omprussia/flutter/packages.git
ref
:
aurora-camera_aurora-0.6.0
path
:
packages/camera_aurora
file_selector
:
^1.0.3
flutter_selector_aurora
:
git
:
url
:
https://gitlab.com/omprussia/flutter/flutter-community-plugins/pickers_aurora.git
ref
:
aurora-flutter_selector_aurora-0.0.1
path
:
packages/flutter_selector_aurora
services_aurora
:
git
:
url
:
https://gitlab.com/omprussia/flutter/flutter-community-plugins/services_aurora.git
ref
:
aurora-0.9.0
dev_dependencies
:
ffigen
:
^13.0.0
flutter_test
:
sdk
:
flutter
flutter_lints
:
^5.0.0
ffigen
:
name
:
FlutterImagePickerLib
description
:
Bindings for `rust c library`.
output
:
'
lib/ffi/flutter_image_picker_aurora_lib_bindings.dart'
headers
:
entry-points
:
-
'
src/flutter_image_picker_aurora_lib.h'
flutter
:
plugin
:
platforms
:
aurora
:
dartPluginClass
:
FlutterImagePickerAurora
ffiPlugin
:
true
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib.h
0 → 100644
Просмотр файла @
df7d95f5
/**
* SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: BSD-3-Clause
*/
#include
<stdarg.h>
#include
<stdbool.h>
#include
<stdint.h>
#include
<stdlib.h>
/**
* Main function
*/
char
*
resize_images
(
const
char
*
request
);
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/.gitignore
0 → 100644
Просмотр файла @
df7d95f5
# Builds cargo
/target
# Configuration cargo
/.cargo
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/Cargo.lock
0 → 100644
Просмотр файла @
df7d95f5
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "adler2"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
[[package]]
name = "autocfg"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "bit_field"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bytemuck"
version = "1.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3"
[[package]]
name = "byteorder"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "color_quant"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
[[package]]
name = "crc32fast"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
dependencies = [
"cfg-if",
]
[[package]]
name = "crossbeam-channel"
version = "0.5.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
[[package]]
name = "crunchy"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929"
[[package]]
name = "either"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
name = "exr"
version = "1.73.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0"
dependencies = [
"bit_field",
"half",
"lebe",
"miniz_oxide",
"rayon-core",
"smallvec",
"zune-inflate",
]
[[package]]
name = "fdeflate"
version = "0.3.5"
source = "git+https://github.com/image-rs/fdeflate?tag=v0.3.5#e16928adc9496537794ce9ae93a55558b45db77a"
dependencies = [
"simd-adler32",
]
[[package]]
name = "flate2"
version = "1.0.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]]
name = "flutter_image_picker_aurora_lib"
version = "0.0.1"
dependencies = [
"image",
"imagesize",
"libc",
"mime_guess",
"serde",
"serde_json",
]
[[package]]
name = "gif"
version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045"
dependencies = [
"color_quant",
"weezl",
]
[[package]]
name = "half"
version = "2.2.1"
source = "git+https://github.com/starkat99/half-rs?tag=v2.2.1#4c56dab175e41faaa367bae9eba82c555f002859"
dependencies = [
"crunchy",
]
[[package]]
name = "hermit-abi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]]
name = "image"
version = "0.24.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "034bbe799d1909622a74d1193aa50147769440040ff36cb2baa947609b0a4e23"
dependencies = [
"bytemuck",
"byteorder",
"color_quant",
"exr",
"gif",
"jpeg-decoder",
"num-traits",
"png",
"qoi",
"tiff",
]
[[package]]
name = "imagesize"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
[[package]]
name = "itoa"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674"
[[package]]
name = "jpeg-decoder"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
dependencies = [
"rayon",
]
[[package]]
name = "lebe"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
[[package]]
name = "libc"
version = "0.2.163"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fdaeca4cf44ed4ac623e86ef41f056e848dbeab7ec043ecb7326ba300b36fd0"
[[package]]
name = "memchr"
version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "mime"
version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
[[package]]
name = "mime_guess"
version = "2.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e"
dependencies = [
"mime",
"unicase",
]
[[package]]
name = "miniz_oxide"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b"
dependencies = [
"adler2",
"simd-adler32",
]
[[package]]
name = "num-traits"
version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
name = "png"
version = "0.17.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
dependencies = [
"bitflags",
"crc32fast",
"fdeflate",
"flate2",
"miniz_oxide",
]
[[package]]
name = "proc-macro2"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
[[package]]
name = "qoi"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
dependencies = [
"bytemuck",
]
[[package]]
name = "quote"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rayon"
version = "1.7.0"
source = "git+https://github.com/rayon-rs/rayon?tag=v1.7.0#6236214d717694917e77aa1c16d91176b9bc2fff"
dependencies = [
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.11.0"
source = "git+https://github.com/rayon-rs/rayon?tag=v1.7.0#6236214d717694917e77aa1c16d91176b9bc2fff"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
"num_cpus",
]
[[package]]
name = "ryu"
version = "1.0.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd"
[[package]]
name = "serde"
version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.217"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.138"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
]
[[package]]
name = "simd-adler32"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
[[package]]
name = "smallvec"
version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
[[package]]
name = "syn"
version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "tiff"
version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
dependencies = [
"flate2",
"jpeg-decoder",
"weezl",
]
[[package]]
name = "unicase"
version = "2.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539"
[[package]]
name = "unicode-ident"
version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00e2473a93778eb0bad35909dff6a10d28e63f792f16ed15e404fca9d5eeedbe"
[[package]]
name = "weezl"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
[[package]]
name = "zune-inflate"
version = "0.2.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
dependencies = [
"simd-adler32",
]
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/Cargo.toml
0 → 100644
Просмотр файла @
df7d95f5
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
[package]
name
=
"flutter_image_picker_aurora_lib"
version
=
"0.0.1"
edition
=
"2021"
rust-version
=
"1.61.0"
[lib]
name
=
"flutter_image_picker_aurora_lib"
crate-type
=
["cdylib"]
[profile.release]
opt-level
=
"z"
strip
=
true
lto
=
true
codegen-units
=
1
panic
=
"abort"
[dependencies]
libc
=
"
=
0.2
.
163
"
image = "
=
0.24
.
8
"
imagesize
=
"0.13.0"
mime_guess
=
"2.0.5"
serde_json
=
"1.0.136"
serde
=
{
version
=
"1.0.217"
,
features
=
["derive"]
}
[patch.crates-io]
# fix image for 1.61.0
rayon
=
{
git
=
"https://github.com/rayon-rs/rayon"
,
tag
=
"v1.7.0"
}
rayon-core
=
{
git
=
"https://github.com/rayon-rs/rayon"
,
tag
=
"v1.7.0"
}
half
=
{
git
=
"https://github.com/starkat99/half-rs"
,
tag
=
"v2.2.1"
}
fdeflate
=
{
git
=
"https://github.com/image-rs/fdeflate"
,
tag
=
"v0.3.5"
}
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/README.md
0 → 100644
Просмотр файла @
df7d95f5
# flutter_image_picker_aurora_lib
Rust library for flutter_selector_aurora.
### Build
```
shell
./release.sh
```
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/builds/aarch64/libflutter_image_picker_aurora_lib.so
0 → 100755
Просмотр файла @
df7d95f5
Файл добавлен
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/builds/armv7hl/libflutter_image_picker_aurora_lib.so
0 → 100755
Просмотр файла @
df7d95f5
Файл добавлен
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/builds/x86_64/libflutter_image_picker_aurora_lib.so
0 → 100755
Просмотр файла @
df7d95f5
Файл добавлен
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/cbindgen.toml
0 → 100644
Просмотр файла @
df7d95f5
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
language
=
"C"
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/release.sh
0 → 100755
Просмотр файла @
df7d95f5
#!/bin/bash
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
###################################
## Build Rust with PSDK all targets
###################################
# Install Rust & Cargo
# $PSDK_DIR/sdk-chroot sb2 -t {target_psdk} -m sdk-install -R zypper in -y cargo
NAME
=
'flutter_image_picker_aurora_lib'
source
~/.bashrc
export
HOME
=
$HOME
/.cargo_psdk
# Folder lib
dir
=
$(
dirname
--
"
$0
"
)
cd
$dir
# Get psdk targets
# $PSDK_DIR/sdk-chroot sdk-assistant list
targets_psdk
=
$(
ls
$PSDK_DIR
/../../targets |
grep
-v
default |
grep
-i
aurora
)
# Get targets rust
# $PSDK_DIR/sdk-chroot sb2 -t $TARGET rustup target list
declare
-A
targets_rust
targets_rust[
'armv7hl'
]=
'armv7-unknown-linux-gnueabihf'
# armv7-unknown-linux-gnueabi
targets_rust[
'aarch64'
]=
'aarch64-unknown-linux-gnu'
targets_rust[
'x86_64'
]=
'x86_64-unknown-linux-gnu'
# Gen headers
# psdk - requires rustc 1.63 or newer
cargo
install
cbindgen
cbindgen
.
-o
../
$NAME
.h
LICENSE
=
$(
cat
<<
SPDX
/**
* SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: BSD-3-Clause
*/
SPDX
)
echo
-e
"
$LICENSE
\n
$(
cat
../
$NAME
.h
)
"
>
../
$NAME
.h
# Clear old build
rm
-rf
target
build
()
{
target_psdk
=
$1
target_rust
=
$2
arch
=
$3
# Check exist
if
[
-f
"builds/
$arch
/lib
$NAME
.so"
]
;
then
echo
"> info:"
echo
"The assembly '
$arch
' is already there."
echo
"==============="
return
0
fi
# Start
echo
"Build
$target_psdk
..."
sleep
1
# Install
$PSDK_DIR
/sdk-chroot sb2
-t
$target_psdk
rustup target add
$target_rust
# Build
$PSDK_DIR
/sdk-chroot sb2
-t
$target_psdk
cargo build
--release
--target
$target_rust
--verbose
-j
1
# Copy
if
[
-f
"target/
$target_rust
/release/lib
$NAME
.so"
]
;
then
mkdir
-p
builds/
$arch
cp
target/
$target_rust
/release/lib
$NAME
.so builds/
$arch
/lib
$NAME
.so
fi
}
# Build all targets
for
target
in
$targets_psdk
do
arch
=
${
target
##*-
}
build
$target
${
targets_rust
[
"
$arch
"
]
}
$arch
done
packages/flutter_image_picker_aurora/src/flutter_image_picker_aurora_lib/rust-toolchain.toml
0 → 100644
Просмотр файла @
df7d95f5
# SPDX-FileCopyrightText: Copyright 2025 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
[toolchain]
channel
=
"stable"
Пред
1
2
3
След
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать