Commit 13d89eb09f7f9d15872ac84a5e12b9587867a8fd

Authored by 权海
1 parent 89cbb899

feat(ui):更新手表检测api

... ... @@ -83,7 +83,8 @@ class FlutterError (
data class WearDeviceInfo (
val deviceId: String? = null,
val deviceName: String? = null,
val isConnected: Boolean? = null,
val isPaired: Boolean? = null,
val isReachable: Boolean? = null,
val isWatchAppInstalled: Boolean? = null
)
{
... ... @@ -91,16 +92,18 @@ data class WearDeviceInfo (
fun fromList(pigeonVar_list: List<Any?>): WearDeviceInfo {
val deviceId = pigeonVar_list[0] as String?
val deviceName = pigeonVar_list[1] as String?
val isConnected = pigeonVar_list[2] as Boolean?
val isWatchAppInstalled = pigeonVar_list[3] as Boolean?
return WearDeviceInfo(deviceId, deviceName, isConnected, isWatchAppInstalled)
val isPaired = pigeonVar_list[2] as Boolean?
val isReachable = pigeonVar_list[3] as Boolean?
val isWatchAppInstalled = pigeonVar_list[4] as Boolean?
return WearDeviceInfo(deviceId, deviceName, isPaired, isReachable, isWatchAppInstalled)
}
}
fun toList(): List<Any?> {
return listOf(
deviceId,
deviceName,
isConnected,
isPaired,
isReachable,
isWatchAppInstalled,
)
}
... ... @@ -141,7 +144,7 @@ private open class WearEngineApiPigeonCodec : StandardMessageCodec() {
/** Generated interface from Pigeon that represents a handler of messages from Flutter. */
interface WearEngineHostApi {
fun hasAvailableDevices(): Boolean
fun checkConnectedDevice(): WearDeviceInfo?
fun checkConnectedDevice(callback: (Result<WearDeviceInfo?>) -> Unit)
fun registerMessageReceiver(): Boolean
fun sendTextMessage(message: String): Boolean
/** 添加表盘 */
... ... @@ -183,12 +186,15 @@ interface WearEngineHostApi {
val channel = BasicMessageChannel<Any?>(binaryMessenger, "dev.flutter.pigeon.doublefeel_flutter.WearEngineHostApi.checkConnectedDevice$separatedMessageChannelSuffix", codec)
if (api != null) {
channel.setMessageHandler { _, reply ->
val wrapped: List<Any?> = try {
listOf(api.checkConnectedDevice())
} catch (exception: Throwable) {
WearEngineApiPigeonUtils.wrapError(exception)
api.checkConnectedDevice{ result: Result<WearDeviceInfo?> ->
val error = result.exceptionOrNull()
if (error != null) {
reply.reply(WearEngineApiPigeonUtils.wrapError(error))
} else {
val data = result.getOrNull()
reply.reply(WearEngineApiPigeonUtils.wrapResult(data))
}
}
reply.reply(wrapped)
}
} else {
channel.setMessageHandler(null)
... ...
... ... @@ -116,7 +116,8 @@ func deepHashWearEngineApi(value: Any?, hasher: inout Hasher) {
struct WearDeviceInfo: Hashable {
var deviceId: String? = nil
var deviceName: String? = nil
var isConnected: Bool? = nil
var isPaired: Bool? = nil
var isReachable: Bool? = nil
var isWatchAppInstalled: Bool? = nil
... ... @@ -124,13 +125,15 @@ struct WearDeviceInfo: Hashable {
static func fromList(_ pigeonVar_list: [Any?]) -> WearDeviceInfo? {
let deviceId: String? = nilOrValue(pigeonVar_list[0])
let deviceName: String? = nilOrValue(pigeonVar_list[1])
let isConnected: Bool? = nilOrValue(pigeonVar_list[2])
let isWatchAppInstalled: Bool? = nilOrValue(pigeonVar_list[3])
let isPaired: Bool? = nilOrValue(pigeonVar_list[2])
let isReachable: Bool? = nilOrValue(pigeonVar_list[3])
let isWatchAppInstalled: Bool? = nilOrValue(pigeonVar_list[4])
return WearDeviceInfo(
deviceId: deviceId,
deviceName: deviceName,
isConnected: isConnected,
isPaired: isPaired,
isReachable: isReachable,
isWatchAppInstalled: isWatchAppInstalled
)
}
... ... @@ -138,7 +141,8 @@ struct WearDeviceInfo: Hashable {
return [
deviceId,
deviceName,
isConnected,
isPaired,
isReachable,
isWatchAppInstalled,
]
}
... ... @@ -189,7 +193,7 @@ class WearEngineApiPigeonCodec: FlutterStandardMessageCodec, @unchecked Sendable
/// Generated protocol from Pigeon that represents a handler of messages from Flutter.
protocol WearEngineHostApi {
func hasAvailableDevices() throws -> Bool
func checkConnectedDevice() throws -> WearDeviceInfo?
func checkConnectedDevice(completion: @escaping (Result<WearDeviceInfo?, Error>) -> Void)
func registerMessageReceiver() throws -> Bool
func sendTextMessage(message: String) throws -> Bool
/// 添加表盘
... ... @@ -224,11 +228,13 @@ class WearEngineHostApiSetup {
let checkConnectedDeviceChannel = FlutterBasicMessageChannel(name: "dev.flutter.pigeon.doublefeel_flutter.WearEngineHostApi.checkConnectedDevice\(channelSuffix)", binaryMessenger: binaryMessenger, codec: codec)
if let api = api {
checkConnectedDeviceChannel.setMessageHandler { _, reply in
do {
let result = try api.checkConnectedDevice()
reply(wrapResult(result))
} catch {
reply(wrapError(error))
api.checkConnectedDevice { result in
switch result {
case .success(let res):
reply(wrapResult(res))
case .failure(let error):
reply(wrapError(error))
}
}
}
} else {
... ...
... ... @@ -146,7 +146,9 @@ class CustomWatchThemePreviewController extends GetxController {
} catch (_) {
device = null;
}
if (device?.isConnected != true || device?.isWatchAppInstalled != true) {
if (device?.isPaired != true ||
device?.isReachable != true ||
device?.isWatchAppInstalled != true) {
await Get.dialog<void>(
const WatchThemeNoWatchDialog(),
barrierColor: const Color(0xB3000000),
... ... @@ -168,7 +170,9 @@ class CustomWatchThemePreviewController extends GetxController {
} catch (_) {
device = null;
}
if (device?.isConnected != true || device?.isWatchAppInstalled != true) {
if (device?.isPaired != true ||
device?.isReachable != true ||
device?.isWatchAppInstalled != true) {
await Get.dialog<void>(
const WatchThemeNoWatchDialog(),
barrierColor: const Color(0xB3000000),
... ...
... ... @@ -117,7 +117,9 @@ class WatchThemePreviewController extends GetxController {
} catch (_) {
device = null;
}
if (device?.isConnected != true || device?.isWatchAppInstalled != true) {
if (device?.isPaired != true ||
device?.isReachable != true ||
device?.isWatchAppInstalled != true) {
await Get.dialog<void>(
const WatchThemeNoWatchDialog(),
barrierColor: const Color(0xB3000000),
... ... @@ -140,7 +142,9 @@ class WatchThemePreviewController extends GetxController {
} catch (_) {
device = null;
}
if (device?.isConnected != true || device?.isWatchAppInstalled != true) {
if (device?.isPaired != true ||
device?.isReachable != true ||
device?.isWatchAppInstalled != true) {
await Get.dialog<void>(
const WatchThemeNoWatchDialog(),
barrierColor: const Color(0xB3000000),
... ...
... ... @@ -34,7 +34,8 @@ class WearDeviceInfo {
WearDeviceInfo({
this.deviceId,
this.deviceName,
this.isConnected,
this.isPaired,
this.isReachable,
this.isWatchAppInstalled,
});
... ... @@ -42,7 +43,9 @@ class WearDeviceInfo {
String? deviceName;
bool? isConnected;
bool? isPaired;
bool? isReachable;
bool? isWatchAppInstalled;
... ... @@ -50,7 +53,8 @@ class WearDeviceInfo {
return <Object?>[
deviceId,
deviceName,
isConnected,
isPaired,
isReachable,
isWatchAppInstalled,
];
}
... ... @@ -63,8 +67,9 @@ class WearDeviceInfo {
return WearDeviceInfo(
deviceId: result[0] as String?,
deviceName: result[1] as String?,
isConnected: result[2] as bool?,
isWatchAppInstalled: result[3] as bool?,
isPaired: result[2] as bool?,
isReachable: result[3] as bool?,
isWatchAppInstalled: result[4] as bool?,
);
}
... ...
... ... @@ -4,13 +4,15 @@ class WearDeviceInfo {
WearDeviceInfo({
this.deviceId,
this.deviceName,
this.isConnected,
this.isPaired,
this.isReachable,
this.isWatchAppInstalled,
});
String? deviceId;
String? deviceName;
bool? isConnected;
bool? isPaired;
bool? isReachable;
bool? isWatchAppInstalled;
}
... ... @@ -34,6 +36,7 @@ class WearDeviceInfo {
abstract class WearEngineHostApi {
bool hasAvailableDevices();
@async
WearDeviceInfo? checkConnectedDevice();
bool registerMessageReceiver();
... ...