Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
clx-fluwx
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
clx-fluwx
Commits
f73fb952
提交
f73fb952
authored
10月 13, 2024
作者:
JarvanMo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
*…
* 使用了多端统一API,详情请点击[这里](
https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Share_and_Favorites/Android.html
) * 分享时所有的缩略图请使用`thumbData`字段 * Fluwx不会再对任何图片进行压缩处理
上级
31327261
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
69 行增加
和
173 行删除
+69
-173
FluwxPlugin.kt
android/src/main/kotlin/com/jarvan/fluwx/FluwxPlugin.kt
+0
-1
FluwxShareHandler.kt
...ain/kotlin/com/jarvan/fluwx/handlers/FluwxShareHandler.kt
+12
-39
AppFrameworkInfo.plist
example/ios/Flutter/AppFrameworkInfo.plist
+1
-1
Podfile
example/ios/Podfile
+1
-1
Podfile.lock
example/ios/Podfile.lock
+3
-3
project.pbxproj
example/ios/Runner.xcodeproj/project.pbxproj
+4
-4
Runner.xcscheme
...s/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+1
-1
share_image_page.dart
example/lib/pages/share_image_page.dart
+0
-5
share_mini_program_page.dart
example/lib/pages/share_mini_program_page.dart
+0
-1
share_music_page.dart
example/lib/pages/share_music_page.dart
+0
-1
share_video_page.dart
example/lib/pages/share_video_page.dart
+0
-1
share_web_page.dart
example/lib/pages/share_web_page.dart
+0
-1
FluwxPlugin.m
ios/Classes/FluwxPlugin.m
+15
-43
arguments.dart
lib/src/foundation/arguments.dart
+1
-0
share_models.dart
lib/src/foundation/share_models.dart
+31
-49
wechat_file.dart
lib/src/wechat_file.dart
+0
-22
没有找到文件。
android/src/main/kotlin/com/jarvan/fluwx/FluwxPlugin.kt
浏览文件 @
f73fb952
...
...
@@ -6,7 +6,6 @@ import com.jarvan.fluwx.handlers.FluwxAuthHandler
import
com.jarvan.fluwx.handlers.FluwxRequestHandler
import
com.jarvan.fluwx.handlers.FluwxShareHandler
import
com.jarvan.fluwx.handlers.FluwxShareHandlerEmbedding
import
com.jarvan.fluwx.handlers.PermissionHandler
import
com.jarvan.fluwx.handlers.WXAPiHandler
import
com.jarvan.fluwx.utils.WXApiUtils
import
com.jarvan.fluwx.utils.readWeChatCallbackIntent
...
...
android/src/main/kotlin/com/jarvan/fluwx/handlers/FluwxShareHandler.kt
浏览文件 @
f73fb952
package
com.jarvan.fluwx.handlers
import
android.Manifest
import
android.content.Context
import
android.content.Intent
import
android.content.pm.PackageManager
import
android.content.res.AssetFileDescriptor
import
android.net.Uri
import
androidx.core.content.ContextCompat
import
androidx.core.content.FileProvider
import
com.jarvan.fluwx.io.*
import
com.tencent.mm.opensdk.modelbase.BaseReq
...
...
@@ -93,8 +90,6 @@ internal interface FluwxShareHandler : CoroutineScope {
msg
.
description
=
call
.
argument
(
keyDescription
)
// 小程序消息desc
launch
{
msg
.
thumbData
=
readThumbnailByteArray
(
call
,
length
=
SHARE_MINI_PROGRAM_THUMB_LENGTH
)
val
req
=
SendMessageToWX
.
Req
()
setCommonArguments
(
call
,
req
,
msg
)
req
.
message
=
msg
...
...
@@ -105,27 +100,24 @@ internal interface FluwxShareHandler : CoroutineScope {
private
fun
shareImage
(
call
:
MethodCall
,
result
:
MethodChannel
.
Result
)
{
launch
{
val
map
:
Map
<
String
,
Any
>
=
call
.
argument
(
"source"
)
?:
mapOf
()
val
sourceImage
=
WeChatFile
.
createWeChatFile
(
map
,
assetFileDescriptor
)
val
thumbData
=
readThumbnailByteArray
(
call
)
val
sourceByteArray
=
sourceImage
.
readByteArray
()
val
imageObject
=
when
{
sourceByteArray
.
isEmpty
()
->
{
WXImageObject
()
val
imgHash
=
call
.
argument
<
String
?>(
"imgDataHash"
)
val
uint8List
=
map
[
"uint8List"
]
as
?
ByteArray
val
imageObject
=
uint8List
?.
let
{
WXImageObject
().
apply
{
imageData
=
it
imgDataHash
=
imgHash
}
else
->
{
WXImageObject
().
apply
{
if
(
supportFileProvider
&&
targetHigherThanN
)
{
setImagePath
(
getFileContentUri
(
sourceByteArray
.
toCacheFile
(
context
,
sourceImage
.
suffix
)))
}
else
{
setImagePath
(
sourceByteArray
.
toExternalCacheFile
(
context
,
sourceImage
.
suffix
)
?.
absolutePath
)
}
}
}
?:
run
{
WXImageObject
().
apply
{
imagePath
=
call
.
argument
<
String
?>(
"localImagePath"
)
imgDataHash
=
imgHash
}
}
val
msg
=
WXMediaMessage
()
msg
.
mediaObject
=
imageObject
msg
.
thumbData
=
thumbData
msg
.
description
=
call
.
argument
(
keyDescription
)
...
...
@@ -154,8 +146,6 @@ internal interface FluwxShareHandler : CoroutineScope {
msg
.
description
=
call
.
argument
(
keyDescription
)
launch
{
msg
.
thumbData
=
readThumbnailByteArray
(
call
)
val
req
=
SendMessageToWX
.
Req
()
setCommonArguments
(
call
,
req
,
msg
)
req
.
message
=
msg
...
...
@@ -177,7 +167,6 @@ internal interface FluwxShareHandler : CoroutineScope {
msg
.
description
=
call
.
argument
(
keyDescription
)
launch
{
msg
.
thumbData
=
readThumbnailByteArray
(
call
)
val
req
=
SendMessageToWX
.
Req
()
setCommonArguments
(
call
,
req
,
msg
)
req
.
message
=
msg
...
...
@@ -195,7 +184,6 @@ internal interface FluwxShareHandler : CoroutineScope {
msg
.
description
=
call
.
argument
(
keyDescription
)
launch
{
msg
.
thumbData
=
readThumbnailByteArray
(
call
)
val
req
=
SendMessageToWX
.
Req
()
setCommonArguments
(
call
,
req
,
msg
)
req
.
message
=
msg
...
...
@@ -227,7 +215,6 @@ internal interface FluwxShareHandler : CoroutineScope {
}
}
msg
.
thumbData
=
readThumbnailByteArray
(
call
)
val
req
=
SendMessageToWX
.
Req
()
setCommonArguments
(
call
,
req
,
msg
)
req
.
message
=
msg
...
...
@@ -239,20 +226,6 @@ internal interface FluwxShareHandler : CoroutineScope {
result
.
success
(
WXAPiHandler
.
wxApi
?.
sendReq
(
request
))
}
private
suspend
fun
readThumbnailByteArray
(
call
:
MethodCall
,
length
:
Int
=
SHARE_IMAGE_THUMB_LENGTH
):
ByteArray
?
{
val
thumbnailMap
:
Map
<
String
,
Any
>?
=
call
.
argument
(
keyThumbnail
)
val
compress
:
Boolean
=
call
.
argument
(
"compressThumbnail"
)
?:
true
return
thumbnailMap
?.
run
{
val
thumbnailImage
=
WeChatFile
.
createWeChatFile
(
thumbnailMap
,
assetFileDescriptor
)
val
thumbnailImageIO
=
ImagesIOIml
(
thumbnailImage
)
if
(
compress
){
compressThumbnail
(
thumbnailImageIO
,
length
)
}
else
{
thumbnailImageIO
.
readByteArray
()
}
}
}
private
suspend
fun
compressThumbnail
(
ioIml
:
ImagesIO
,
length
:
Int
)
=
ioIml
.
compressedByteArray
(
context
,
length
)
// SESSION, TIMELINE, FAVORITE
...
...
example/ios/Flutter/AppFrameworkInfo.plist
浏览文件 @
f73fb952
...
...
@@ -21,6 +21,6 @@
<
k
e
y
>
CFBundleVersion
<
/k
e
y
>
<
string
>
1.0
<
/string
>
<
k
e
y
>
MinimumOSVersion
<
/k
e
y
>
<
string
>
1
1
.0
<
/string
>
<
string
>
1
2
.0
<
/string
>
<
/
d
i
c
t
>
<
/plist
>
example/ios/Podfile
浏览文件 @
f73fb952
# Uncomment this line to define a global platform for your project
# platform :ios, '1
1
.0'
# platform :ios, '1
2
.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV
[
'COCOAPODS_DISABLE_STATS'
]
=
'true'
...
...
example/ios/Podfile.lock
浏览文件 @
f73fb952
...
...
@@ -29,10 +29,10 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
fluwx: c
37e78d6ad04b852e39f785e660c65d4906e3f4f
fluwx: c
18fd6c16b03a2187cd07d6e48e32a7801962849
integration_test: 13825b8a9334a850581300559b8839134b124670
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
PODFILE CHECKSUM:
02caaa843f6501172c0d470d80e72f61175c8b93
PODFILE CHECKSUM:
6e700dec67e6deac9b1c69bb14c49a2217a12d15
COCOAPODS: 1.1
2.1
COCOAPODS: 1.1
5.2
example/ios/Runner.xcodeproj/project.pbxproj
浏览文件 @
f73fb952
...
...
@@ -230,7 +230,7 @@
KnownAssetTags
=
(
New
,
);
LastUpgradeCheck
=
1
43
0
;
LastUpgradeCheck
=
1
51
0
;
ORGANIZATIONNAME
=
""
;
TargetAttributes
=
{
331C80F0294D02FB00263BE5
=
{
...
...
@@ -467,7 +467,7 @@
GCC_WARN_UNINITIALIZED_AUTOS
=
YES_AGGRESSIVE
;
GCC_WARN_UNUSED_FUNCTION
=
YES
;
GCC_WARN_UNUSED_VARIABLE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
1
.0
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
2
.0
;
MTL_ENABLE_DEBUG_INFO
=
NO
;
SDKROOT
=
iphoneos
;
SUPPORTED_PLATFORMS
=
iphoneos
;
...
...
@@ -585,7 +585,7 @@
GCC_WARN_UNINITIALIZED_AUTOS
=
YES_AGGRESSIVE
;
GCC_WARN_UNUSED_FUNCTION
=
YES
;
GCC_WARN_UNUSED_VARIABLE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
1
.0
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
2
.0
;
MTL_ENABLE_DEBUG_INFO
=
YES
;
ONLY_ACTIVE_ARCH
=
YES
;
SDKROOT
=
iphoneos
;
...
...
@@ -634,7 +634,7 @@
GCC_WARN_UNINITIALIZED_AUTOS
=
YES_AGGRESSIVE
;
GCC_WARN_UNUSED_FUNCTION
=
YES
;
GCC_WARN_UNUSED_VARIABLE
=
YES
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
1
.0
;
IPHONEOS_DEPLOYMENT_TARGET
=
1
2
.0
;
MTL_ENABLE_DEBUG_INFO
=
NO
;
SDKROOT
=
iphoneos
;
SUPPORTED_PLATFORMS
=
iphoneos
;
...
...
example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
浏览文件 @
f73fb952
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion =
"1
43
0"
LastUpgradeVersion =
"1
51
0"
version =
"1.3"
>
<BuildAction
parallelizeBuildables =
"YES"
...
...
example/lib/pages/share_image_page.dart
浏览文件 @
f73fb952
...
...
@@ -12,8 +12,6 @@ class _ShareImagePageState extends State<ShareImagePage> {
WeChatScene
scene
=
WeChatScene
.
session
;
String
_response
=
''
;
WeChatImage
?
source
;
WeChatImage
?
thumbnail
;
Fluwx
fluwx
=
Fluwx
();
@override
...
...
@@ -57,7 +55,6 @@ class _ShareImagePageState extends State<ShareImagePage> {
'&src=http%3A%2F%2Fimg.mp.sohu.com%2Fupload%2F20170516%2F51296b2673704ae2992d0a28c244274c_th.png'
,
),
onChanged:
(
value
)
{
source
=
WeChatImage
.
network
(
value
);
},
keyboardType:
TextInputType
.
multiline
,
),
...
...
@@ -65,7 +62,6 @@ class _ShareImagePageState extends State<ShareImagePage> {
decoration:
InputDecoration
(
labelText:
'缩略地址'
),
controller:
TextEditingController
(
text:
'//images/logo.png'
),
onChanged:
(
value
)
{
thumbnail
=
WeChatImage
.
asset
(
value
);
},
),
Row
(
...
...
@@ -117,7 +113,6 @@ class _ShareImagePageState extends State<ShareImagePage> {
}
void
_shareImage
()
{
fluwx
.
share
(
WeChatShareImageModel
(
source
!,
thumbnail:
thumbnail
));
}
void
handleRadioValueChanged
(
WeChatScene
scene
)
{
...
...
example/lib/pages/share_mini_program_page.dart
浏览文件 @
f73fb952
...
...
@@ -97,7 +97,6 @@ class _ShareMiniProgramPageState extends State<ShareMiniProgramPage> {
title:
_title
,
path:
_path
,
description:
_description
,
thumbnail:
WeChatImage
.
network
(
_thumbnail
),
);
fluwx
.
share
(
model
);
}
...
...
example/lib/pages/share_music_page.dart
浏览文件 @
f73fb952
...
...
@@ -129,7 +129,6 @@ class _ShareMusicPageState extends State<ShareMusicPage> {
musicUrl:
_musicUrl
,
scene:
scene
,
musicLowBandUrl:
_musicLowBandUrl
,
thumbnail:
WeChatImage
.
network
(
_thumnail
),
);
_fluwx
.
share
(
model
);
...
...
example/lib/pages/share_video_page.dart
浏览文件 @
f73fb952
...
...
@@ -125,7 +125,6 @@ class _ShareVideoPageState extends State<ShareVideoPage> {
var
model
=
WeChatShareVideoModel
(
videoUrl:
_videoUrl
,
videoLowBandUrl:
_videoLowBandUrl
,
thumbnail:
WeChatImage
.
network
(
_thumnail
),
description:
_description
,
scene:
scene
,
title:
_title
,
...
...
example/lib/pages/share_web_page.dart
浏览文件 @
f73fb952
...
...
@@ -106,7 +106,6 @@ class ShareWebPagePageState extends State<ShareWebPagePage> {
var
model
=
WeChatShareWebPageModel
(
_url
,
title:
_title
,
thumbnail:
WeChatImage
.
network
(
_thumnail
),
scene:
scene
,
);
fluwx
.
share
(
model
);
...
...
ios/Classes/FluwxPlugin.m
浏览文件 @
f73fb952
...
...
@@ -525,20 +525,18 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
dispatch_async
(
globalQueue
,
^
{
NSDictionary
*
sourceImage
=
call
.
arguments
[
keySource
];
NSData
*
sourceImageData
=
[
self
getNsDataFromWeChatFile
:
sourceImage
];
UIImage
*
thumbnailImage
=
[
self
getCommonThumbnail
:
call
];
UIImage
*
realThumbnailImage
;
if
(
thumbnailImage
==
nil
)
{
NSString
*
suffix
=
sourceImage
[
@"suffix"
];
BOOL
isPNG
=
[
self
isPNG
:
suffix
];
BOOL
compress
=
[
call
.
arguments
[
fluwxKeyCompressThumbnail
]
boolValue
];
realThumbnailImage
=
[
self
getThumbnailFromNSData
:
sourceImageData
size
:
defaultThumbnailSize
isPNG
:
isPNG
compress
:
compress
];
}
else
{
realThumbnailImage
=
thumbnailImage
;
FlutterStandardTypedData
*
flutterImageData
=
sourceImage
[
@"uint8List"
];
NSData
*
imageData
=
nil
;
if
(
flutterImageData
!=
nil
){
imageData
=
flutterImageData
.
data
;
}
NSString
*
imageDataHash
=
sourceImage
[
@"imgDataHash"
];
dispatch_async
(
dispatch_get_main_queue
(),
^
{
FlutterStandardTypedData
*
flutterThumbData
=
call
.
arguments
[
fluwxKeyThumbData
];
NSData
*
thumbData
=
nil
;
...
...
@@ -547,12 +545,13 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
thumbData
=
flutterThumbData
.
data
;
}
NSNumber
*
scene
=
call
.
arguments
[
fluwxKeyScene
];
[
self
sendImageData
:
sourceImageData
[
self
sendImageData
:
imageData
ImgDataHash
:
imageDataHash
TagName
:
call
.
arguments
[
fluwxKeyMediaTagName
]
MessageExt
:
call
.
arguments
[
fluwxKeyMessageExt
]
Action
:
call
.
arguments
[
fluwxKeyMessageAction
]
ThumbImage
:
realThumbnailImage
InScene
:
[
self
intToWeChatScene
:
scene
]
title
:
call
.
arguments
[
fluwxKeyTitle
]
description
:
call
.
arguments
[
fluwxKeyDescription
]
...
...
@@ -723,23 +722,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
dispatch_queue_t
globalQueue
=
dispatch_get_global_queue
(
0
,
0
);
dispatch_async
(
globalQueue
,
^
{
UIImage
*
thumbnailImage
=
[
self
getCommonThumbnail
:
call
];
NSData
*
hdImageData
=
nil
;
NSDictionary
*
hdImagePath
=
call
.
arguments
[
@"hdImagePath"
];
if
(
hdImagePath
!=
(
id
)
[
NSNull
null
])
{
NSData
*
imageData
=
[
self
getNsDataFromWeChatFile
:
hdImagePath
];
BOOL
compress
=
[
call
.
arguments
[
fluwxKeyCompressThumbnail
]
boolValue
];
hdImageData
=
[
self
getThumbnailDataFromNSData
:
imageData
size
:
120
*
1024
compress
:
compress
];
// UIImage *uiImage = [self getThumbnailFromNSData:imageData size:120 * 1024 isPNG:isPNG compress:compress];
// if (isPNG) {
// hdImageData = UIImagePNGRepresentation(uiImage);
// } else {
// hdImageData = UIImageJPEGRepresentation(uiImage, 1);
// }
}
dispatch_async
(
dispatch_get_main_queue
(),
^
{
...
...
@@ -765,8 +747,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
path
:
call
.
arguments
[
@"path"
]
title
:
call
.
arguments
[
fluwxKeyTitle
]
Description
:
call
.
arguments
[
fluwxKeyDescription
]
ThumbImage
:
thumbnailImage
hdImageData
:
hdImageData
withShareTicket
:
[
call
.
arguments
[
@"withShareTicket"
]
boolValue
]
miniProgramType
:
miniProgramType
MessageExt
:
call
.
arguments
[
fluwxKeyMessageExt
]
...
...
@@ -1189,10 +1169,10 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
}
-
(
void
)
sendImageData
:
(
NSData
*
)
imageData
ImgDataHash
:
(
NSString
*
)
imgDataHash
TagName
:
(
NSString
*
)
tagName
MessageExt
:
(
NSString
*
)
messageExt
Action
:
(
NSString
*
)
action
ThumbImage
:
(
UIImage
*
)
thumbImage
InScene
:
(
enum
WXScene
)
scene
title
:
(
NSString
*
)
title
description
:
(
NSString
*
)
description
...
...
@@ -1202,13 +1182,13 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
completion
:
(
void
(
^
__nullable
)(
BOOL
success
))
completion
{
WXImageObject
*
ext
=
[
WXImageObject
object
];
ext
.
imageData
=
imageData
;
ext
.
imgDataHash
=
(
imgDataHash
==
(
id
)
[
NSNull
null
])
?
nil
:
imgDataHash
;
WXMediaMessage
*
message
=
[
self
messageWithTitle
:(
title
==
(
id
)
[
NSNull
null
])
?
nil
:
title
Description
:(
description
==
(
id
)
[
NSNull
null
])
?
nil
:
description
Object
:
ext
MessageExt
:
(
messageExt
==
(
id
)
[
NSNull
null
])
?
nil
:
messageExt
MessageAction
:
(
action
==
(
id
)
[
NSNull
null
])
?
nil
:
action
ThumbImage
:
thumbImage
MediaTag
:
(
tagName
==
(
id
)
[
NSNull
null
])
?
nil
:
tagName
MsgSignature
:
(
msgSignature
==
(
id
)
[
NSNull
null
])
?
nil
:
msgSignature
ThumbData
:
thumbData
...
...
@@ -1244,7 +1224,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Object
:
ext
MessageExt
:
(
messageExt
==
(
id
)
[
NSNull
null
])
?
nil
:
messageExt
MessageAction
:
(
messageAction
==
(
id
)
[
NSNull
null
])
?
nil
:
messageAction
ThumbImage
:
thumbImage
MediaTag
:
(
tagName
==
(
id
)
[
NSNull
null
])
?
nil
:
tagName
MsgSignature
:
(
msgSignature
==
(
id
)
[
NSNull
null
])
?
nil
:
msgSignature
ThumbData
:
thumbData
...
...
@@ -1289,7 +1268,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Object
:
ext
MessageExt
:
(
messageExt
==
(
id
)
[
NSNull
null
])
?
nil
:
messageExt
MessageAction
:
(
messageAction
==
(
id
)
[
NSNull
null
])
?
nil
:
messageAction
ThumbImage
:
thumbImage
MediaTag
:
(
tagName
==
(
id
)
[
NSNull
null
])
?
nil
:
tagName
MsgSignature
:
(
msgSignature
==
(
id
)
[
NSNull
null
])
?
nil
:
msgSignature
ThumbData
:
thumbData
...
...
@@ -1405,8 +1383,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
path
:
(
NSString
*
)
path
title
:
(
NSString
*
)
title
Description
:
(
NSString
*
)
description
ThumbImage
:
(
UIImage
*
)
thumbImage
hdImageData
:
(
NSData
*
)
hdImageData
withShareTicket
:
(
BOOL
)
withShareTicket
miniProgramType
:
(
WXMiniProgramType
)
programType
MessageExt
:
(
NSString
*
)
messageExt
...
...
@@ -1421,7 +1397,7 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
ext
.
webpageUrl
=
(
webpageUrl
==
(
id
)
[
NSNull
null
])
?
nil
:
webpageUrl
;
ext
.
userName
=
(
userName
==
(
id
)
[
NSNull
null
])
?
nil
:
userName
;
ext
.
path
=
(
path
==
(
id
)
[
NSNull
null
])
?
nil
:
path
;
ext
.
hdImageData
=
(
hdImageData
==
(
id
)
[
NSNull
null
])
?
nil
:
hdImageData
;
ext
.
withShareTicket
=
withShareTicket
;
ext
.
miniProgramType
=
programType
;
...
...
@@ -1431,7 +1407,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Object
:
ext
MessageExt
:
(
messageExt
==
(
id
)
[
NSNull
null
])
?
nil
:
messageExt
MessageAction
:
(
messageAction
==
(
id
)
[
NSNull
null
])
?
nil
:
messageAction
ThumbImage
:
thumbImage
MediaTag
:
(
tagName
==
(
id
)
[
NSNull
null
])
?
nil
:
tagName
MsgSignature
:
(
msgSignature
==
(
id
)
[
NSNull
null
])
?
nil
:
msgSignature
ThumbData
:
thumbData
...
...
@@ -1470,7 +1445,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Object
:
ext
MessageExt
:
messageExt
MessageAction
:
action
ThumbImage
:
thumbImage
MediaTag
:
nil
MsgSignature
:
(
msgSignature
==
(
id
)
[
NSNull
null
])
?
nil
:
msgSignature
ThumbData
:
thumbData
...
...
@@ -1660,7 +1634,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
Object
:
(
id
)
mediaObject
MessageExt
:
(
NSString
*
)
messageExt
MessageAction
:
(
NSString
*
)
action
ThumbImage
:
(
UIImage
*
)
thumbImage
MediaTag
:
(
NSString
*
)
tagName
MsgSignature
:
(
NSString
*
)
msgSignature
ThumbData
:
(
NSData
*
)
thumbData
...
...
@@ -1678,7 +1651,6 @@ NSObject <FlutterPluginRegistrar> *_fluwxRegistrar;
if
(
msgSignature
!=
nil
){
message
.
msgSignature
=
msgSignature
;
}
[
message
setThumbImage
:
thumbImage
];
return
message
;
}
...
...
lib/src/foundation/arguments.dart
浏览文件 @
f73fb952
...
...
@@ -17,6 +17,7 @@
* the License.
*/
import
'dart:io'
;
import
'dart:typed_data'
;
import
'../wechat_enums.dart'
;
...
...
lib/src/foundation/share_models.dart
浏览文件 @
f73fb952
...
...
@@ -21,13 +21,11 @@ part of 'arguments.dart';
const
String
_scene
=
"scene"
;
const
String
_source
=
"source"
;
const
String
_thumbnail
=
"thumbnail"
;
const
String
_title
=
"title"
;
const
String
_description
=
"description"
;
const
String
_messageExt
=
"messageExt"
;
const
String
_mediaTagName
=
"mediaTagName"
;
const
String
_messageAction
=
"messageAction"
;
const
String
_compressThumbnail
=
"compressThumbnail"
;
const
String
_msgSignature
=
"msgSignature"
;
const
String
_thumbData
=
"thumbData"
;
const
String
_thumbDataHash
=
"thumbDataHash"
;
...
...
@@ -88,8 +86,6 @@ class WeChatShareTextModel extends WeChatShareModel {
}
/// the default value is [MINI_PROGRAM_TYPE_RELEASE]
/// [hdImagePath] only works on iOS, not sure the relationship
/// between [thumbnail] and [hdImagePath].
class
WeChatShareMiniProgramModel
extends
WeChatShareModel
{
WeChatShareMiniProgramModel
({
required
this
.
webPageUrl
,
...
...
@@ -99,12 +95,9 @@ class WeChatShareMiniProgramModel extends WeChatShareModel {
super
.
title
,
super
.
description
,
this
.
withShareTicket
=
false
,
required
this
.
thumbnail
,
this
.
hdImagePath
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
,
...
...
@@ -116,13 +109,10 @@ class WeChatShareMiniProgramModel extends WeChatShareModel {
final
WXMiniProgramType
miniProgramType
;
final
String
userName
;
final
String
path
;
final
WeChatImage
?
hdImagePath
;
final
WeChatImage
thumbnail
;
final
bool
withShareTicket
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
...
...
@@ -133,11 +123,8 @@ class WeChatShareMiniProgramModel extends WeChatShareModel {
"title"
:
title
,
_description:
description
,
"withShareTicket"
:
withShareTicket
,
_thumbnail:
thumbnail
.
toMap
(),
"hdImagePath"
:
hdImagePath
?.
toMap
(),
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
...
...
@@ -146,44 +133,43 @@ class WeChatShareMiniProgramModel extends WeChatShareModel {
/// [source] the image you want to send to WeChat
/// [scene] the target you want to send
/// [thumbnail] the preview of your image, will be created from [scene] if null.
class
WeChatShareImageModel
extends
WeChatShareModel
{
WeChatShareImageModel
(
this
.
source
,
{
WeChatImage
?
thumbnail
,
this
.
entranceMiniProgramPath
,
this
.
entranceMiniProgramUsername
,
super
.
title
,
this
.
scene
=
WeChatScene
.
session
,
super
.
description
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
,
})
:
thumbnail
=
thumbnail
??
source
;
});
final
WeChatImage
source
;
final
WeChatImage
thumbnail
;
final
WeChatImageToShare
source
;
final
WeChatScene
scene
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
final
String
?
entranceMiniProgramUsername
;
final
String
?
entranceMiniProgramPath
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
_scene:
scene
.
index
,
_source:
source
.
toMap
(),
_thumbnail:
thumbnail
.
toMap
(),
_source:
source
.
arguments
,
_title:
title
,
_description:
description
,
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
"entranceMiniProgramUsername"
:
entranceMiniProgramUsername
,
"entranceMiniProgramPath"
:
entranceMiniProgramPath
,
};
}
...
...
@@ -197,12 +183,10 @@ class WeChatShareMusicModel extends WeChatShareModel {
super
.
description
=
""
,
this
.
musicDataUrl
,
this
.
musicLowBandDataUrl
,
this
.
thumbnail
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
scene
=
WeChatScene
.
session
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
})
...
...
@@ -212,12 +196,10 @@ class WeChatShareMusicModel extends WeChatShareModel {
final
String
?
musicDataUrl
;
final
String
?
musicLowBandUrl
;
final
String
?
musicLowBandDataUrl
;
final
WeChatImage
?
thumbnail
;
final
WeChatScene
scene
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
...
...
@@ -226,12 +208,10 @@ class WeChatShareMusicModel extends WeChatShareModel {
"musicDataUrl"
:
musicDataUrl
,
"musicLowBandUrl"
:
musicLowBandUrl
,
"musicLowBandDataUrl"
:
musicLowBandDataUrl
,
_thumbnail:
thumbnail
?.
toMap
(),
_title:
title
,
_description:
description
,
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
...
...
@@ -247,37 +227,30 @@ class WeChatShareVideoModel extends WeChatShareModel {
this
.
videoLowBandUrl
,
super
.
title
=
""
,
super
.
description
=
""
,
this
.
thumbnail
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
,
})
:
assert
(
videoUrl
!=
null
||
videoLowBandUrl
!=
null
),
assert
(
thumbnail
!=
null
);
})
:
assert
(
videoUrl
!=
null
||
videoLowBandUrl
!=
null
);
final
String
?
videoUrl
;
final
String
?
videoLowBandUrl
;
final
WeChatImage
?
thumbnail
;
final
WeChatScene
scene
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
_scene:
scene
.
index
,
"videoUrl"
:
videoUrl
,
"videoLowBandUrl"
:
videoLowBandUrl
,
_thumbnail:
thumbnail
?.
toMap
(),
_title:
title
,
_description:
description
,
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
...
...
@@ -291,35 +264,29 @@ class WeChatShareWebPageModel extends WeChatShareModel {
this
.
webPage
,
{
super
.
title
=
""
,
super
.
description
,
this
.
thumbnail
,
this
.
scene
=
WeChatScene
.
session
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
,
})
:
assert
(
webPage
.
isNotEmpty
);
final
String
webPage
;
final
WeChatImage
?
thumbnail
;
final
WeChatScene
scene
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
_scene:
scene
.
index
,
"webPage"
:
webPage
,
_thumbnail:
thumbnail
?.
toMap
(),
_title:
title
,
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_description:
description
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
...
...
@@ -334,37 +301,52 @@ class WeChatShareFileModel extends WeChatShareModel {
this
.
source
,
{
super
.
title
=
""
,
super
.
description
=
""
,
this
.
thumbnail
,
this
.
scene
=
WeChatScene
.
session
,
this
.
mediaTagName
,
this
.
messageAction
,
this
.
messageExt
,
this
.
compressThumbnail
=
true
,
super
.
msgSignature
,
super
.
thumbData
,
super
.
thumbDataHash
,
});
final
WeChatFile
source
;
final
WeChatImage
?
thumbnail
;
final
WeChatScene
scene
;
final
String
?
messageExt
;
final
String
?
messageAction
;
final
String
?
mediaTagName
;
final
bool
compressThumbnail
;
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
_scene:
scene
.
index
,
_source:
source
.
toMap
(),
_thumbnail:
thumbnail
?.
toMap
(),
_title:
title
,
_description:
description
,
_messageAction:
messageAction
,
_mediaTagName:
mediaTagName
,
_compressThumbnail:
compressThumbnail
,
_msgSignature:
msgSignature
,
_thumbData:
thumbData
,
_thumbDataHash:
thumbDataHash
,
};
}
class
WeChatImageToShare
with
_Argument
{
final
Uint8List
?
uint8List
;
final
String
?
localImagePath
;
final
String
?
imgDataHash
;
/// [uint8List] is available on both iOS and Android
/// [localImagePath] only available on Android, if [uint8List] is null, [localImagePath] must not be null;
/// if [uint8List] and [localImagePath] are both provided on android, [uint8List] will be used.
WeChatImageToShare
(
this
.
uint8List
,
this
.
localImagePath
,
this
.
imgDataHash
)
:
assert
(
Platform
.
isIOS
&&
uint8List
!=
null
),
assert
(
Platform
.
isAndroid
&&
(
uint8List
!=
null
||
localImagePath
!=
null
));
@override
Map
<
String
,
dynamic
>
get
arguments
=>
{
'uint8List'
:
uint8List
,
'localImagePath'
:
localImagePath
,
'imgDataHash'
:
imgDataHash
,
};
}
lib/src/wechat_file.dart
浏览文件 @
f73fb952
...
...
@@ -22,28 +22,6 @@ import 'dart:typed_data';
const
String
defaultSuffixJpeg
=
'.jpeg'
;
const
String
defaultSuffixTxt
=
'.txt'
;
class
WeChatImage
extends
WeChatFile
{
WeChatImage
.
network
(
String
source
,
{
String
suffix
=
defaultSuffixJpeg
,
})
:
super
.
network
(
source
,
suffix:
suffix
);
WeChatImage
.
asset
(
String
source
,
{
String
suffix
=
defaultSuffixJpeg
,
})
:
super
.
asset
(
source
,
suffix:
suffix
);
WeChatImage
.
file
(
File
source
,
{
String
suffix
=
defaultSuffixJpeg
,
})
:
super
.
file
(
source
,
suffix:
suffix
);
WeChatImage
.
binary
(
Uint8List
source
,
{
String
suffix
=
defaultSuffixJpeg
,
})
:
super
.
binary
(
source
,
suffix:
suffix
);
}
class
WeChatFile
{
/// [source] must begin with http or https
WeChatFile
.
network
(
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论