Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
ethan
/
appframe
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit e9b7f361
authored
2026-06-29 19:13:52 +0800
by
tanghuan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
打开相册指令、打开相机指令
1 parent
a63df17e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
64 additions
and
0 deletions
lib/config/locator.dart
lib/data/repositories/message/sys_album_handler.dart
lib/data/repositories/message/sys_camera_handler.dart
pubspec.yaml
lib/config/locator.dart
View file @
e9b7f36
...
@@ -31,6 +31,8 @@ import 'package:appframe/data/repositories/message/screen_handler.dart';
...
@@ -31,6 +31,8 @@ import 'package:appframe/data/repositories/message/screen_handler.dart';
import
'package:appframe/data/repositories/message/share_handler.dart'
;
import
'package:appframe/data/repositories/message/share_handler.dart'
;
import
'package:appframe/data/repositories/message/share_to_wx_handler.dart'
;
import
'package:appframe/data/repositories/message/share_to_wx_handler.dart'
;
import
'package:appframe/data/repositories/message/storage_handler.dart'
;
import
'package:appframe/data/repositories/message/storage_handler.dart'
;
import
'package:appframe/data/repositories/message/sys_album_handler.dart'
;
import
'package:appframe/data/repositories/message/sys_camera_handler.dart'
;
import
'package:appframe/data/repositories/message/title_bar_handler.dart'
;
import
'package:appframe/data/repositories/message/title_bar_handler.dart'
;
import
'package:appframe/data/repositories/message/upload_cancel_handler.dart'
;
import
'package:appframe/data/repositories/message/upload_cancel_handler.dart'
;
import
'package:appframe/data/repositories/message/upload_file.dart'
;
import
'package:appframe/data/repositories/message/upload_file.dart'
;
...
@@ -167,6 +169,12 @@ Future<void> setupLocator() async {
...
@@ -167,6 +169,12 @@ Future<void> setupLocator() async {
/// 打开文档
/// 打开文档
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
OpenDocumentHandler
(),
instanceName:
'openDocument'
);
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
OpenDocumentHandler
(),
instanceName:
'openDocument'
);
/// 打开系统相册
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
SysAlbumHandler
(),
instanceName:
'sysAlbum'
);
/// 打开系统相机
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
SysCameraHandler
(),
instanceName:
'sysCamera'
);
/// 预览图片
/// 预览图片
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
PreviewMediaHandler
(),
instanceName:
'previewMedia'
);
getIt
.
registerLazySingleton
<
MessageHandler
>(()
=>
PreviewMediaHandler
(),
instanceName:
'previewMedia'
);
...
...
lib/data/repositories/message/sys_album_handler.dart
0 → 100644
View file @
e9b7f36
import
'dart:io'
;
import
'package:android_intent_plus/android_intent.dart'
;
import
'package:appframe/services/dispatcher.dart'
;
/// sysAlbum 指令处理类
///
/// 打开系统相册应用,仅 Android 平台生效。
/// 无需参数,H5 调用示例:{ "cmd": "sysAlbum" }
class
SysAlbumHandler
extends
MessageHandler
{
@override
Future
<
dynamic
>
handleMessage
(
params
)
async
{
if
(!
Platform
.
isAndroid
)
{
return
false
;
}
const
intent
=
AndroidIntent
(
action:
'android.intent.action.VIEW'
,
data:
'content://media/external/images/media'
,
);
await
intent
.
launch
();
return
true
;
}
}
lib/data/repositories/message/sys_camera_handler.dart
0 → 100644
View file @
e9b7f36
import
'dart:io'
;
import
'package:android_intent_plus/android_intent.dart'
;
import
'package:appframe/services/dispatcher.dart'
;
/// sysCamera 指令处理类
///
/// 打开系统相机进行拍照或录像,仅 Android 平台生效。
/// 可选参数 type:'photo'(默认,拍照)或 'video'(录像)。
/// H5 调用示例:{ "cmd": "sysCamera" } 或 { "cmd": "sysCamera", "params": { "type": "video" } }
class
SysCameraHandler
extends
MessageHandler
{
@override
Future
<
dynamic
>
handleMessage
(
params
)
async
{
if
(!
Platform
.
isAndroid
)
{
return
false
;
}
String
type
=
'photo'
;
if
(
params
is
Map
<
String
,
dynamic
>)
{
type
=
params
[
'type'
]
as
String
?
??
'photo'
;
}
final
String
action
=
type
==
'video'
?
'android.media.action.VIDEO_CAPTURE'
:
'android.media.action.IMAGE_CAPTURE'
;
final
intent
=
AndroidIntent
(
action:
action
);
await
intent
.
launch
();
return
true
;
}
}
pubspec.yaml
View file @
e9b7f36
...
@@ -34,6 +34,7 @@ dependencies:
...
@@ -34,6 +34,7 @@ dependencies:
permission_handler
:
^12.0.1
permission_handler
:
^12.0.1
url_launcher
:
^6.3.2
url_launcher
:
^6.3.2
app_settings
:
^6.1.1
app_settings
:
^6.1.1
android_intent_plus
:
^5.3.1
# --- UI 与 媒体 ---
# --- UI 与 媒体 ---
file_picker
:
^10.3.2
file_picker
:
^10.3.2
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment