添加测试示例
This commit is contained in:
11
README.md
11
README.md
@@ -51,6 +51,17 @@ bridge.share(
|
||||
);
|
||||
```
|
||||
|
||||
## 示例页面
|
||||
|
||||
包中包含了一个完整的示例页面 `WebToolsExamplePage`,展示了所有交互方法的使用示例,按功能模块分类组织。
|
||||
|
||||
### 使用示例页面
|
||||
```agsl
|
||||
在自己的web项目中 添加测试跳转连接
|
||||
Get.to(WebToolsExamplePage());
|
||||
```
|
||||

|
||||
|
||||
|
||||
## API 文档
|
||||
|
||||
|
||||
695
lib/example_page.dart
Normal file
695
lib/example_page.dart
Normal file
@@ -0,0 +1,695 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:web_tools/web_tools.dart';
|
||||
|
||||
class WebToolsExamplePage extends StatefulWidget {
|
||||
const WebToolsExamplePage({super.key});
|
||||
|
||||
@override
|
||||
State<WebToolsExamplePage> createState() => _WebToolsExamplePageState();
|
||||
}
|
||||
|
||||
class _WebToolsExamplePageState extends State<WebToolsExamplePage> {
|
||||
final FlutterBridge bridge = FlutterBridge.instance;
|
||||
|
||||
// 控制器用于输入参数
|
||||
final TextEditingController gameIdController = TextEditingController()
|
||||
..text = '311';
|
||||
final TextEditingController userIdController = TextEditingController()
|
||||
..text = 'f894609cbab2440c8b2c5161049ec881';
|
||||
final TextEditingController googleProductIdController =
|
||||
TextEditingController()..text = '70055';
|
||||
final TextEditingController iosProductIdController = TextEditingController();
|
||||
final TextEditingController pathController = TextEditingController();
|
||||
final TextEditingController titleController = TextEditingController();
|
||||
final TextEditingController gameCodeController = TextEditingController()
|
||||
..text = '310';
|
||||
final TextEditingController activityIdController = TextEditingController()
|
||||
..text = '83';
|
||||
final TextEditingController schemeController = TextEditingController();
|
||||
final TextEditingController linkUrlController = TextEditingController();
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
gameIdController.dispose();
|
||||
userIdController.dispose();
|
||||
googleProductIdController.dispose();
|
||||
iosProductIdController.dispose();
|
||||
pathController.dispose();
|
||||
titleController.dispose();
|
||||
gameCodeController.dispose();
|
||||
activityIdController.dispose();
|
||||
schemeController.dispose();
|
||||
linkUrlController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Widget _buildMethodTile(
|
||||
String title, String description, VoidCallback onPressed) {
|
||||
return ListTile(
|
||||
title: Text(title, style: const TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Text(description),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: onPressed,
|
||||
child: const Text('调用'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMethodWithInputTile(
|
||||
String title,
|
||||
String description,
|
||||
TextEditingController controller,
|
||||
String hint,
|
||||
VoidCallback onPressed,
|
||||
) {
|
||||
return ListTile(
|
||||
title: Text(title, style: const TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(description),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: controller,
|
||||
decoration: InputDecoration(
|
||||
hintText: hint,
|
||||
border: const OutlineInputBorder(),
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: onPressed,
|
||||
child: const Text('调用'),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('Web Tools 交互方法示例'),
|
||||
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
|
||||
),
|
||||
body: ListView(
|
||||
padding: const EdgeInsets.all(16),
|
||||
children: [
|
||||
// 游戏相关模块
|
||||
ExpansionTile(
|
||||
title: const Text('游戏相关方法'),
|
||||
children: [
|
||||
_buildMethodTile(
|
||||
'关闭页面',
|
||||
'关闭当前网页',
|
||||
() => bridge.close(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'关闭游戏页面',
|
||||
'关闭游戏页面左上角返回',
|
||||
() => bridge.sendToFlutter(ToFlutterAppEnum.gameExit.code, {}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'游戏结束',
|
||||
'通知原生游戏已结束',
|
||||
() => bridge.gameOver(),
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'创建游戏',
|
||||
'创建指定ID的游戏',
|
||||
gameIdController,
|
||||
'输入游戏ID',
|
||||
() {
|
||||
if (gameIdController.text.isNotEmpty) {
|
||||
bridge.createGame(gameIdController.text);
|
||||
} else {
|
||||
bridge.createGame("311");
|
||||
}
|
||||
},
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'想玩游戏',
|
||||
'表达想玩指定游戏的意愿',
|
||||
gameIdController,
|
||||
'输入游戏ID',
|
||||
() {
|
||||
if (gameIdController.text.isNotEmpty) {
|
||||
bridge.wantToPlay(gameIdController.text);
|
||||
}
|
||||
},
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'跳转到游戏详情页',
|
||||
'不同的值代表不同的游戏',
|
||||
gameIdController,
|
||||
'gameType',
|
||||
() {
|
||||
if (gameIdController.text.isNotEmpty) {
|
||||
bridge.sendToFlutter(ToFlutterAppEnum.gameType.code,
|
||||
{"gameType": gameIdController.text});
|
||||
}
|
||||
},
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'检查游戏状态',
|
||||
'检查指定游戏的状态',
|
||||
gameCodeController,
|
||||
'输入游戏代码',
|
||||
() {
|
||||
if (gameCodeController.text.isNotEmpty) {
|
||||
bridge.checkGameState(gameCodeController.text);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 充值支付模块
|
||||
ExpansionTile(
|
||||
title: const Text('充值支付方法'),
|
||||
children: [
|
||||
_buildMethodTile(
|
||||
'前往充值',
|
||||
'跳转到充值页面',
|
||||
() => bridge.toRecharge(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'前往红钻充值',
|
||||
'跳转到红钻充值页面',
|
||||
() => bridge.toRedDiamond(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'定向充值',
|
||||
'直接唤起内购付费框',
|
||||
() => bridge.sendToFlutter(
|
||||
ToFlutterAppEnum.rechargeItem.code, {"productId": "70055"}),
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('月卡支付',
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('跳转到月卡支付页面'),
|
||||
const SizedBox(height: 8),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TextField(
|
||||
controller: googleProductIdController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: 'Google产品ID',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding: EdgeInsets.symmetric(
|
||||
horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 8),
|
||||
Expanded(
|
||||
child: TextField(
|
||||
controller: iosProductIdController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: 'iOS产品ID',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding: EdgeInsets.symmetric(
|
||||
horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: userIdController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '其他用户ID (可选)',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: () {
|
||||
if (googleProductIdController.text.isNotEmpty &&
|
||||
iosProductIdController.text.isNotEmpty) {
|
||||
bridge.toMonthCardPay(
|
||||
googleProductIdController.text,
|
||||
iosProductIdController.text,
|
||||
otherUserId: userIdController.text,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: const Text('调用'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 页面导航模块
|
||||
ExpansionTile(
|
||||
title: const Text('页面导航方法'),
|
||||
children: [
|
||||
ListTile(
|
||||
title: const Text('跳转到H5页面',
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('在原生App中跳转到H5页面'),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: pathController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '页面路径',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: titleController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '页面标题',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: () {
|
||||
if (pathController.text.isNotEmpty &&
|
||||
titleController.text.isNotEmpty) {
|
||||
bridge.jumpToH5(
|
||||
pathController.text, titleController.text);
|
||||
}
|
||||
},
|
||||
child: const Text('调用'),
|
||||
),
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'前往用户主页',
|
||||
'跳转到指定用户的主页',
|
||||
userIdController,
|
||||
'输入用户ID',
|
||||
() {
|
||||
if (userIdController.text.isNotEmpty) {
|
||||
bridge.toHomepage(userIdController.text);
|
||||
}
|
||||
},
|
||||
),
|
||||
_buildMethodTile("恩爱节活动", "恩爱节活动跳转选择好友 1:cp 2:告白 3:组队", () {
|
||||
bridge.sendToFlutter(
|
||||
ToFlutterAppEnum.lovingDayChooseFriend.code, {});
|
||||
}),
|
||||
ListTile(
|
||||
title: const Text('跳转到网页',
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('在原生App中打开网页'),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: linkUrlController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '网页链接',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: activityIdController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '活动ID',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: () {
|
||||
if (linkUrlController.text.isNotEmpty &&
|
||||
activityIdController.text.isNotEmpty) {
|
||||
bridge.taskToWebViewPage(
|
||||
linkUrl: linkUrlController.text,
|
||||
activityId: activityIdController.text,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: const Text('调用'),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('解析URL并跳转',
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('解析scheme URL并跳转'),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: schemeController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: 'Scheme URL',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
TextField(
|
||||
controller: activityIdController,
|
||||
decoration: const InputDecoration(
|
||||
hintText: '活动ID',
|
||||
border: OutlineInputBorder(),
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: () {
|
||||
if (schemeController.text.isNotEmpty &&
|
||||
activityIdController.text.isNotEmpty) {
|
||||
bridge.taskCommandJump(
|
||||
scheme: schemeController.text,
|
||||
activityId: activityIdController.text,
|
||||
);
|
||||
}
|
||||
},
|
||||
child: const Text('调用'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 分享功能模块
|
||||
ExpansionTile(
|
||||
title: const Text('分享功能'),
|
||||
children: [
|
||||
_buildMethodWithInputTile(
|
||||
'分享(通用分享)',
|
||||
'分享活动,需要活动ID',
|
||||
activityIdController,
|
||||
'输入活动ID',
|
||||
() {
|
||||
if (activityIdController.text.isNotEmpty) {
|
||||
bridge.share(
|
||||
activityId: activityIdController.text,
|
||||
needShareReport: true,
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
_buildMethodWithInputTile(
|
||||
'分享(带卡片分享)',
|
||||
'分享活动,需要活动ID',
|
||||
activityIdController,
|
||||
'输入活动ID',
|
||||
() {
|
||||
if (activityIdController.text.isNotEmpty) {
|
||||
bridge.share(
|
||||
activityId: activityIdController.text,
|
||||
needShareReport: true,
|
||||
shareCardModel: ShareCardModel(
|
||||
activityIcon:
|
||||
"app/img/local/new_year_share_content_bg_en_th.webp",
|
||||
activityDesc: "这只是一个示例"));
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 直播互动模块
|
||||
ExpansionTile(
|
||||
title: const Text('直播互动方法'),
|
||||
children: [
|
||||
_buildMethodTile(
|
||||
'检查开播',
|
||||
'检查是否可以开始直播',
|
||||
() => bridge.checkStartBroadcaster(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'直播间发言任务',
|
||||
'触发直播间发言任务',
|
||||
() => bridge.taskLiveRoomChat(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'直播间送礼任务',
|
||||
'触发直播间送礼任务',
|
||||
() => bridge.taskLiveRoomGift(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'直播间其他任务',
|
||||
'触发直播间其他任务',
|
||||
() => bridge.taskLiveRoomOther(),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 任务系统模块
|
||||
ExpansionTile(
|
||||
title: const Text('任务系统方法'),
|
||||
children: [
|
||||
_buildMethodTile(
|
||||
'完善个人信息',
|
||||
'跳转到完善个人信息页面',
|
||||
() => bridge.shouldCompleteProfile(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'观看时长任务',
|
||||
'触发观看时长任务',
|
||||
() => bridge.shouldWatchDuration(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'发送公屏消息任务',
|
||||
'触发发送公屏消息任务',
|
||||
() => bridge.shouldSendPublicMessage(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'上麦互动任务',
|
||||
'触发上麦互动任务',
|
||||
() => bridge.shouldMicInteraction(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'发送私聊消息任务',
|
||||
'触发发送私聊消息任务',
|
||||
() => bridge.shouldSendPrivateMessage(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'发布动态任务',
|
||||
'触发发布动态任务',
|
||||
() => bridge.shouldPostFeed(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'分享房间任务',
|
||||
'触发分享房间任务',
|
||||
() => bridge.shouldShareRoom(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'佩戴装扮任务',
|
||||
'触发佩戴装扮任务',
|
||||
() => bridge.shouldWearDecoration(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'前往语音房任务',
|
||||
'触发前往语音房任务',
|
||||
() => bridge.shouldGoToVoiceRoom(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'观看直播',
|
||||
'触发前往语音房任务有-》 收藏房间 | 关注主播 | 发送房间消息 ',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType.taskKeyWatchLive.code,
|
||||
// taskKeyCollectRoom | taskKeyFollowUser | taskKeySendRoomMessage
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'赠送礼物',
|
||||
'触发前往语音房任务 && (打开礼物面板 or 赠送指定礼物 or 打开我的背包) ',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType.taskKeySendGift
|
||||
.code, // taskKeySendGiftId | taskKeySendBackpackGift
|
||||
...{"targetId": ""}
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'我想玩 XX游戏',
|
||||
'触发前往语音房任务 && 发送我想玩 XX游戏',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeyPlayGame.code, // taskKeySendGiftId
|
||||
...{"targetId": ""}
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'发红包',
|
||||
'触发前往语音房任务 && 发红包',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": "TaskKeySendRedPack",
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'发送私聊消息',
|
||||
'聊天 Tab ',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeySendPrivateMessage.code, // taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'参与动态话题',
|
||||
'比传参数 topicTitle',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType":
|
||||
WebInteractionType.taskKeyTimelineTopic.code,
|
||||
...{
|
||||
"topicTitle": "",
|
||||
"targetId": "",
|
||||
"content": "",
|
||||
"image": "",
|
||||
"textId": ""
|
||||
}
|
||||
// taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'点赞动态 or 评论动态',
|
||||
'切换 圈子 Tab',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeyLikeTimeline.code, // taskKeyReplayTimeline
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'签到',
|
||||
'首页签到弹框',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeySignIn.code, // taskKeyReplayTimeline
|
||||
|
||||
// taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'其他页面',
|
||||
'进入其他h5页面',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeyOtherPage.code, // taskKeyReplayTimeline
|
||||
|
||||
// taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'我的钱包页面',
|
||||
'我的钱包页面',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeyMineWallet.code, // taskKeyReplayTimeline
|
||||
|
||||
// taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'我的背包',
|
||||
'我的装扮背包页面(或者是称号)',
|
||||
() => bridge.commonInteraction({
|
||||
"interactionType": WebInteractionType
|
||||
.taskKeyMineBackpack.code, // taskKeyReplayTimeline
|
||||
|
||||
// taskKeySendGiftId
|
||||
}),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
// 其他功能模块
|
||||
ExpansionTile(
|
||||
title: const Text('其他功能方法'),
|
||||
children: [
|
||||
_buildMethodTile(
|
||||
'专属见面礼',
|
||||
'触发专属见面礼任务',
|
||||
() => bridge.taskInviteCodeGift(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'跳转从业者申请',
|
||||
'跳转到从业者申请页面',
|
||||
() => bridge.toApplyAdmissionPage(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'直播预约设置',
|
||||
'打开直播预约设置',
|
||||
() => bridge.shouLiveBookingPicker(),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'观时礼刷新宝箱数据',
|
||||
'观时礼刷新宝箱数据',
|
||||
() =>
|
||||
bridge.sendToFlutter(ToFlutterAppEnum.closeObserving.code, {
|
||||
"updateType": "1" // 1 刷新整个挂件数据,2刷新观时礼的宝箱列表数据
|
||||
}),
|
||||
),
|
||||
_buildMethodTile(
|
||||
'翻译',
|
||||
'多语言翻译',
|
||||
() => bridge.sendRequest(
|
||||
sendType: ToFlutterAppEnum.translateRequest,
|
||||
listenType: FromFlutterAppEnum.translateResult,
|
||||
params: {"text0001": "text0001"},
|
||||
onSuccess: (dic) {}),
|
||||
),
|
||||
ListTile(
|
||||
title: const Text('通用交互',
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
subtitle: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('通用交互方法,可以传递自定义参数'),
|
||||
const SizedBox(height: 8),
|
||||
Container(
|
||||
padding: const EdgeInsets.all(12),
|
||||
decoration: BoxDecoration(
|
||||
border: Border.all(color: Colors.grey),
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: const Text(
|
||||
'示例参数:{"action": "custom_action", "data": "value"}',
|
||||
style: TextStyle(fontSize: 12, color: Colors.grey),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
trailing: ElevatedButton(
|
||||
onPressed: () {
|
||||
bridge.commonInteraction({
|
||||
"action": "custom_action",
|
||||
"data": "example_value",
|
||||
"timestamp": DateTime.now().toIso8601String(),
|
||||
});
|
||||
},
|
||||
child: const Text('调用'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -3,3 +3,4 @@ library;
|
||||
export 'package:web_tools/utils/app_bridge.dart';
|
||||
export 'package:web_tools/utils/config.dart';
|
||||
export 'package:web_tools/utils/model/model.dart';
|
||||
export 'package:web_tools/example_page.dart';
|
||||
|
||||
Reference in New Issue
Block a user