解决收到视频数据后加载刷新白屏问题
This commit is contained in:
parent
c87d2f96b0
commit
962c7cfded
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
import '../../../../tools/eventBusEventManage.dart';
|
import '../../../../tools/eventBusEventManage.dart';
|
||||||
import 'lockMonitoring_state.dart';
|
import 'lockMonitoring_state.dart';
|
||||||
@ -12,8 +13,14 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
StreamSubscription? _getTVDataRefreshUIEvent;
|
StreamSubscription? _getTVDataRefreshUIEvent;
|
||||||
void _getTVDataRefreshUIAction() {
|
void _getTVDataRefreshUIAction() {
|
||||||
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
|
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
|
||||||
_getTVDataRefreshUIEvent = eventBus.on<GetTVDataRefreshUI>().listen((event) {
|
_getTVDataRefreshUIEvent =
|
||||||
state.listData.value = event.tvList;
|
eventBus.on<GetTVDataRefreshUI>().listen((event) {
|
||||||
|
if (event.tvList.isNotEmpty) {
|
||||||
|
// 预加载图片数据
|
||||||
|
Uint8List imageData = Uint8List.fromList(event.tvList);
|
||||||
|
// 更新状态
|
||||||
|
state.listData.value = imageData;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,7 +37,6 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
void onInit() {
|
void onInit() {
|
||||||
// TODO: implement onInit
|
// TODO: implement onInit
|
||||||
super.onInit();
|
super.onInit();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -39,5 +45,4 @@ class LockMonitoringLogic extends BaseGetXController {
|
|||||||
print("锁详情界面销毁了");
|
print("锁详情界面销毁了");
|
||||||
_getTVDataRefreshUIEvent!.cancel();
|
_getTVDataRefreshUIEvent!.cancel();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
@ -23,63 +25,60 @@ class _LockMonitoringPageState extends State<LockMonitoringPage> {
|
|||||||
return SizedBox(
|
return SizedBox(
|
||||||
width: 1.sw,
|
width: 1.sw,
|
||||||
height: 1.sh,
|
height: 1.sh,
|
||||||
// color: Colors.transparent,
|
|
||||||
child: Stack(
|
child: Stack(
|
||||||
// alignment: Alignment.bottomCenter,
|
children: [
|
||||||
children: [
|
Obx(() => state.listData.value.isEmpty
|
||||||
// state.listData.value.isEmpty ? Image.asset("images/icon_test20231113.png", width: 1.sw, height: 1.sh, fit: BoxFit.cover) :
|
? Container(color: Colors.transparent)
|
||||||
Obx(() =>
|
: Image.memory(
|
||||||
state.listData.value.isEmpty
|
state.listData.value,
|
||||||
? Container(color: Colors.red)
|
gaplessPlayback: true,
|
||||||
:Image.memory(
|
width: 1.sw,
|
||||||
Uint8List.fromList(state.listData.value),
|
height: 1.sh,
|
||||||
width: 1.sw,
|
fit: BoxFit.cover,
|
||||||
height: 1.sh,
|
)),
|
||||||
fit: BoxFit.cover,
|
Positioned(
|
||||||
)),
|
top: ScreenUtil().statusBarHeight + 30.h,
|
||||||
Positioned(
|
child: Row(children: [
|
||||||
top: ScreenUtil().statusBarHeight + 30.h,
|
SizedBox(width: 30.w),
|
||||||
child: Row(children: [
|
GestureDetector(
|
||||||
SizedBox(width: 30.w),
|
onTap: () {
|
||||||
GestureDetector(
|
Get.back();
|
||||||
onTap: () {
|
},
|
||||||
Get.back();
|
child: Container(
|
||||||
},
|
decoration: BoxDecoration(
|
||||||
child: Container(
|
color: Colors.white,
|
||||||
decoration: BoxDecoration(
|
borderRadius: BorderRadius.circular(25.h)),
|
||||||
color: Colors.white,
|
padding: EdgeInsets.all(10.w),
|
||||||
borderRadius: BorderRadius.circular(25.h)),
|
child: Image(
|
||||||
padding: EdgeInsets.all(10.w),
|
width: 40.w,
|
||||||
child: Image(
|
height: 40.w,
|
||||||
width: 40.w,
|
image: const AssetImage("images/icon_left_black.png"),
|
||||||
height: 40.w,
|
|
||||||
image: const AssetImage("images/icon_left_black.png"),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
]),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
]),
|
||||||
bottom: 10.w,
|
|
||||||
child: Container(
|
|
||||||
width: 1.sw - 30.w * 2,
|
|
||||||
// height: 300.h,
|
|
||||||
margin: EdgeInsets.all(30.w),
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
color: const Color(0xC83C3F41),
|
|
||||||
borderRadius: BorderRadius.circular(20.h)),
|
|
||||||
child: Column(
|
|
||||||
children: [
|
|
||||||
SizedBox(height: 20.h),
|
|
||||||
bottomTopBtnWidget(),
|
|
||||||
SizedBox(height: 20.h),
|
|
||||||
bottomBottomBtnWidget(),
|
|
||||||
SizedBox(height: 20.h),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
))
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
|
Positioned(
|
||||||
|
bottom: 10.w,
|
||||||
|
child: Container(
|
||||||
|
width: 1.sw - 30.w * 2,
|
||||||
|
// height: 300.h,
|
||||||
|
margin: EdgeInsets.all(30.w),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: const Color(0xC83C3F41),
|
||||||
|
borderRadius: BorderRadius.circular(20.h)),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
SizedBox(height: 20.h),
|
||||||
|
bottomTopBtnWidget(),
|
||||||
|
SizedBox(height: 20.h),
|
||||||
|
bottomBottomBtnWidget(),
|
||||||
|
SizedBox(height: 20.h),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,9 +5,9 @@ import 'package:get/get.dart';
|
|||||||
class LockMonitoringState {
|
class LockMonitoringState {
|
||||||
var isOpenVoice = false.obs;
|
var isOpenVoice = false.obs;
|
||||||
|
|
||||||
var listData = <int>[].obs;
|
var listData = Uint8List(0).obs;
|
||||||
|
|
||||||
Uint8List imageData = Uint8List.fromList([
|
Uint8List imageData = Uint8List.fromList([
|
||||||
255,
|
255,
|
||||||
216,
|
216,
|
||||||
255,
|
255,
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_sound/flutter_sound.dart';
|
import 'package:flutter_sound/flutter_sound.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:get/get_core/src/get_main.dart';
|
||||||
|
import 'package:star_lock/appRouters.dart';
|
||||||
import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart';
|
import 'package:star_lock/main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart';
|
||||||
import 'package:star_lock/talk/call/g711Decoder.dart';
|
import 'package:star_lock/talk/call/g711Decoder.dart';
|
||||||
import 'package:star_lock/talk/call/iFrameInfo.dart';
|
import 'package:star_lock/talk/call/iFrameInfo.dart';
|
||||||
@ -21,7 +24,7 @@ class CallTalk {
|
|||||||
int status = 0; // 假设有这个成员变量
|
int status = 0; // 假设有这个成员变量
|
||||||
IframeInfo? iframe; // 假设有这个成员变量
|
IframeInfo? iframe; // 假设有这个成员变量
|
||||||
var growableList;
|
var growableList;
|
||||||
LockMonitoringPage callOut = const LockMonitoringPage();
|
bool getFirstFrame = false; //是否得到了第一帧
|
||||||
final FlutterSoundPlayer _audioPlayer = FlutterSoundPlayer();
|
final FlutterSoundPlayer _audioPlayer = FlutterSoundPlayer();
|
||||||
|
|
||||||
CallTalk._init() {
|
CallTalk._init() {
|
||||||
@ -107,6 +110,13 @@ class CallTalk {
|
|||||||
if (iframe!.bagNum == iframe!.bagReceive) {
|
if (iframe!.bagNum == iframe!.bagReceive) {
|
||||||
print(
|
print(
|
||||||
'播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ${Uint8List.fromList(growableList)}');
|
'播放第${iframe!.iframeIndex}帧 一帧图片的hexStringData: ${Uint8List.fromList(growableList)}');
|
||||||
|
|
||||||
|
//判断第一帧是否接收到
|
||||||
|
if (iframe!.iframeIndex == 0) {
|
||||||
|
getFirstFrame = true;
|
||||||
|
eventBus.fire(GetFirstFrameGoPush(getFirstFrame));
|
||||||
|
}
|
||||||
|
|
||||||
eventBus.fire(GetTVDataRefreshUI(growableList));
|
eventBus.fire(GetTVDataRefreshUI(growableList));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
@ -10,32 +8,33 @@ import '../../tools/storage.dart';
|
|||||||
import 'udp_manage.dart';
|
import 'udp_manage.dart';
|
||||||
import 'udp_senderManage.dart';
|
import 'udp_senderManage.dart';
|
||||||
|
|
||||||
class UdpHelp{
|
class UdpHelp {
|
||||||
|
|
||||||
openUDP() async {
|
openUDP() async {
|
||||||
// 从服务器获取ip跟端口
|
// 从服务器获取ip跟端口
|
||||||
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
||||||
if(entity.errorCode! == 0){
|
if (entity.errorCode! == 0) {
|
||||||
UDPManage();
|
UDPManage();
|
||||||
// UDPManage().initUdp();
|
// UDPManage().initUdp();
|
||||||
// UDPManage().host = entity.data!.serviceList![0].serviceIp!;
|
// UDPManage().host = entity.data!.serviceList![0].serviceIp!;
|
||||||
// UDPManage().port = int.parse(entity.data!.serviceList![0].port!);
|
// UDPManage().port = int.parse(entity.data!.serviceList![0].port!);
|
||||||
|
|
||||||
var serversList = <int>[];
|
var serversList = <int>[];
|
||||||
for(int i = 0; i<entity.data!.serviceList!.length; i++){
|
for (int i = 0; i < entity.data!.serviceList!.length; i++) {
|
||||||
var item = entity.data!.serviceList![i];
|
var item = entity.data!.serviceList![i];
|
||||||
if(item.serviceIp!.contains("192")){
|
if (item.serviceIp!.contains("192")) {
|
||||||
var itemList = item.serviceIp!.split(".");
|
var itemList = item.serviceIp!.split(".");
|
||||||
for (var element in itemList) {
|
for (var element in itemList) {
|
||||||
serversList.add(int.parse(element));
|
serversList.add(int.parse(element));
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
List<InternetAddress> addresses = await InternetAddress.lookup(item.serviceIp!);
|
List<InternetAddress> addresses =
|
||||||
|
await InternetAddress.lookup(item.serviceIp!);
|
||||||
var itemList = addresses.first.address.split(".");
|
var itemList = addresses.first.address.split(".");
|
||||||
for (var element in itemList) {
|
for (var element in itemList) {
|
||||||
serversList.add(int.parse(element));
|
serversList.add(int.parse(element));
|
||||||
}
|
}
|
||||||
print('Resolved google.com to address: ${addresses.first.address} serversList:${serversList}');
|
print(
|
||||||
|
'Resolved google.com to address: ${addresses.first.address} serversList:${serversList}');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,9 +50,7 @@ class UdpHelp{
|
|||||||
|
|
||||||
Future<void> getWifiLockServiceIpAndPort() async {
|
Future<void> getWifiLockServiceIpAndPort() async {
|
||||||
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
var entity = await ApiRepository.to.getWifiLockServiceIpAndPort();
|
||||||
if(entity.errorCode! == 0){
|
if (entity.errorCode! == 0) {}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,28 +1,29 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:fast_gbk/fast_gbk.dart';
|
import 'package:fast_gbk/fast_gbk.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:star_lock/tools/eventBusEventManage.dart';
|
||||||
|
|
||||||
import '../../appRouters.dart';
|
import '../../appRouters.dart';
|
||||||
import '../../main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart';
|
import '../../main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart';
|
||||||
import '../../tools/storage.dart';
|
import '../../tools/storage.dart';
|
||||||
import 'udp_manage.dart';
|
import 'udp_manage.dart';
|
||||||
|
|
||||||
class UDPTalkClass{
|
class UDPTalkClass {
|
||||||
static UDPTalkClass? _manager;
|
static UDPTalkClass? _manager;
|
||||||
static UDPTalkClass _share(){
|
static UDPTalkClass _share() {
|
||||||
_manager ??= UDPTalkClass._init();
|
_manager ??= UDPTalkClass._init();
|
||||||
return _manager!;
|
return _manager!;
|
||||||
}
|
}
|
||||||
|
|
||||||
factory UDPTalkClass() => _share();
|
factory UDPTalkClass() => _share();
|
||||||
UDPTalkClass get manager => _share();
|
UDPTalkClass get manager => _share();
|
||||||
|
|
||||||
UDPTalkClass._init();
|
UDPTalkClass._init();
|
||||||
|
|
||||||
var status = 0;// 0空闲
|
var status = 0; // 0空闲
|
||||||
var remoteEquid;// 手机号
|
var remoteEquid; // 手机号
|
||||||
late Timer timer;
|
late Timer timer;
|
||||||
// 该字段是为了判断是否跳转到接听界面 挂断或者退出接听界面要记得变更状态
|
// 该字段是为了判断是否跳转到接听界面 挂断或者退出接听界面要记得变更状态
|
||||||
var isBeCall = false;
|
var isBeCall = false;
|
||||||
@ -33,7 +34,7 @@ class UDPTalkClass{
|
|||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if(status == 0){
|
if (status == 0) {
|
||||||
// 空闲
|
// 空闲
|
||||||
// 响铃
|
// 响铃
|
||||||
// [[Pub getApp] ring];
|
// [[Pub getApp] ring];
|
||||||
@ -65,22 +66,36 @@ class UDPTalkClass{
|
|||||||
data[8] = 9;
|
data[8] = 9;
|
||||||
UDPManage().sendData(data);
|
UDPManage().sendData(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// _getFirstFrameGoPushAction();
|
||||||
|
Future.delayed(const Duration(seconds: 1), () {
|
||||||
|
// 在这里写要延迟执行的代码
|
||||||
|
Get.toNamed(Routers.lockMonitoringPage, arguments: {"lockId": "111"});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
Get.toNamed(Routers.lockMonitoringPage, arguments: {
|
|
||||||
"lockId": "111"
|
|
||||||
});
|
|
||||||
}else{
|
|
||||||
// 忙
|
// 忙
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _getFirstFrameGoPushAction() {
|
||||||
|
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
|
||||||
|
StreamSubscription _GetFirstFrameGoPushEvent =
|
||||||
|
eventBus.on<GetFirstFrameGoPush>().listen((event) {
|
||||||
|
if (event.isFirstFrame == true) {
|
||||||
|
Future.delayed(const Duration(seconds: 1), () {
|
||||||
|
// 在这里写要延迟执行的代码
|
||||||
|
Get.toNamed(Routers.lockMonitoringPage, arguments: {"lockId": "111"});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 判断是否是call的本人
|
// 判断是否是call的本人
|
||||||
Future<bool> isCallMe(List<int>? data) async {
|
Future<bool> isCallMe(List<int>? data) async {
|
||||||
final loginData = await Storage.getLoginData();
|
final loginData = await Storage.getLoginData();
|
||||||
print("getEquidFrombb(data, 1000):${getEquidFrombb(data, 12)}");
|
print("getEquidFrombb(data, 1000):${getEquidFrombb(data, 12)}");
|
||||||
if(loginData!.mobile == getEquidFrombb(data, 12)){
|
if (loginData!.mobile == getEquidFrombb(data, 12)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@ -6,58 +6,64 @@ import '../main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart';
|
|||||||
EventBus eventBus = EventBus();
|
EventBus eventBus = EventBus();
|
||||||
|
|
||||||
/// 刷新锁列表数据
|
/// 刷新锁列表数据
|
||||||
class RefreshLockListInfoDataEvent{
|
class RefreshLockListInfoDataEvent {
|
||||||
RefreshLockListInfoDataEvent();
|
RefreshLockListInfoDataEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 刷新考勤员工列表
|
/// 刷新考勤员工列表
|
||||||
class RefreshCheckInStaffListDataEvent{
|
class RefreshCheckInStaffListDataEvent {
|
||||||
RefreshCheckInStaffListDataEvent();
|
RefreshCheckInStaffListDataEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 传递当前锁信息
|
/// 传递当前锁信息
|
||||||
class PassCurrentLockInformationEvent{
|
class PassCurrentLockInformationEvent {
|
||||||
LockSetInfoData lockSetInfoData;
|
LockSetInfoData lockSetInfoData;
|
||||||
PassCurrentLockInformationEvent(this.lockSetInfoData);
|
PassCurrentLockInformationEvent(this.lockSetInfoData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 卡、密码、指纹修改之后刷新列表
|
/// 卡、密码、指纹修改之后刷新列表
|
||||||
class OtherTypeRefreshListEvent{
|
class OtherTypeRefreshListEvent {
|
||||||
OtherTypeRefreshListEvent();
|
OtherTypeRefreshListEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 考情添加员工卡、指纹之后回调卡、指纹number
|
/// 考情添加员工卡、指纹之后回调卡、指纹number
|
||||||
class ChickInAddStaffCardAndFingerprintBlockNumberEvent{
|
class ChickInAddStaffCardAndFingerprintBlockNumberEvent {
|
||||||
String number;
|
String number;
|
||||||
ChickInAddStaffCardAndFingerprintBlockNumberEvent(this.number);
|
ChickInAddStaffCardAndFingerprintBlockNumberEvent(this.number);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Uuid删除当前锁时 有可能锁被初始化了 但后台没被初始化 当打开APP的时候扫描如果未被连接就传uuid过去 判断直接删除数据
|
/// Uuid删除当前锁时 有可能锁被初始化了 但后台没被初始化 当打开APP的时候扫描如果未被连接就传uuid过去 判断直接删除数据
|
||||||
class ScanAllDeviceFindCurrentDeviceConnectedEvent{
|
class ScanAllDeviceFindCurrentDeviceConnectedEvent {
|
||||||
String uuid;
|
String uuid;
|
||||||
ScanAllDeviceFindCurrentDeviceConnectedEvent(this.uuid);
|
ScanAllDeviceFindCurrentDeviceConnectedEvent(this.uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 多语言 切换之后传值到上一级界面
|
/// 多语言 切换之后传值到上一级界面
|
||||||
class ChangeLanguageBlockLastLanguageEvent{
|
class ChangeLanguageBlockLastLanguageEvent {
|
||||||
String languageTitle;
|
String languageTitle;
|
||||||
ChangeLanguageBlockLastLanguageEvent(this.languageTitle);
|
ChangeLanguageBlockLastLanguageEvent(this.languageTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 锁分组添加或者删除锁之后刷新首页数据
|
/// 锁分组添加或者删除锁之后刷新首页数据
|
||||||
class LockGroupEditGroupLockRefreshEvent{
|
class LockGroupEditGroupLockRefreshEvent {
|
||||||
LockGroupEditGroupLockRefreshEvent();
|
LockGroupEditGroupLockRefreshEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 锁设置里面开启关闭刷新锁详情
|
/// 锁设置里面开启关闭刷新锁详情
|
||||||
class LockSetChangeSetRefreshLockDetailWithType{
|
class LockSetChangeSetRefreshLockDetailWithType {
|
||||||
int type;// 0 考勤 1开锁时是否需联网
|
int type; // 0 考勤 1开锁时是否需联网
|
||||||
int setResult;
|
int setResult;
|
||||||
LockSetChangeSetRefreshLockDetailWithType(this.type, this.setResult);
|
LockSetChangeSetRefreshLockDetailWithType(this.type, this.setResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 获取到视频流数据然后刷新界面
|
/// 获取到视频流数据然后刷新界面
|
||||||
class GetTVDataRefreshUI{
|
class GetTVDataRefreshUI {
|
||||||
List<int> tvList;
|
List<int> tvList;
|
||||||
GetTVDataRefreshUI(this.tvList);
|
GetTVDataRefreshUI(this.tvList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 获取到第一帧图片数据后跳转
|
||||||
|
class GetFirstFrameGoPush {
|
||||||
|
bool isFirstFrame;
|
||||||
|
GetFirstFrameGoPush(this.isFirstFrame);
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user