Commit 7918cd84 by tanghuan

getDeviceInfo, openLink, setTitlebar

1 parent 54b39c5d
......@@ -39,6 +39,7 @@ class WebState extends Equatable {
final int titleColor;
final int bgColor;
final String opIcon;
final bool showAppBar;
final bool showBottomNavBar;
// 是否通过登录操作进入
......@@ -79,6 +80,7 @@ class WebState extends Equatable {
this.titleColor = 0xFFFFFFFF,
this.bgColor = 0xFF7691FA,
this.opIcon = 'none',
this.showAppBar = true,
this.showBottomNavBar = false,
this.loginOpFlag = false,
this.sessionCode,
......@@ -106,7 +108,7 @@ class WebState extends Equatable {
int? titleColor,
int? bgColor,
String? opIcon,
bool? showNavBar,
bool? showAppBar,
bool? showBottomNavBar,
bool? loginOpFlag,
String? sessionCode,
......@@ -133,6 +135,7 @@ class WebState extends Equatable {
titleColor: titleColor ?? this.titleColor,
bgColor: bgColor ?? this.bgColor,
opIcon: opIcon ?? this.opIcon,
showAppBar: showAppBar ?? this.showAppBar,
showBottomNavBar: showBottomNavBar ?? this.showBottomNavBar,
loginOpFlag: loginOpFlag ?? this.loginOpFlag,
sessionCode: sessionCode ?? this.sessionCode,
......@@ -162,6 +165,7 @@ class WebState extends Equatable {
titleColor,
bgColor,
opIcon,
showAppBar,
showBottomNavBar,
sessionCode,
userCode,
......@@ -561,11 +565,11 @@ class WebCubit extends Cubit<WebState> with WidgetsBindingObserver {
_sendResponse(resp);
}
bool setTitleBar(String title, String color, String bgColor, String icon) {
bool setTitleBar(bool hidden, String title, String color, String bgColor, String icon) {
int parsedTitleColor = _hexStringToInt(color);
int parsedBgColor = _hexStringToInt(bgColor);
emit(state.copyWith(title: title, titleColor: parsedTitleColor, bgColor: parsedBgColor, opIcon: icon));
emit(state.copyWith(showAppBar: !hidden, title: title, titleColor: parsedTitleColor, bgColor: parsedBgColor, opIcon: icon));
return true;
}
......
......@@ -3,6 +3,7 @@ import 'dart:ui';
import 'package:appframe/services/dispatcher.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart';
class DeviceInfoHandler extends MessageHandler {
@override
......@@ -24,7 +25,8 @@ class DeviceInfoHandler extends MessageHandler {
'platform': 'Android',
'cpuType': androidInfo.hardware,
'memorySize': _getAndroidMemorySize(androidInfo),
'statusBarHeight': statusBarHeight,
'statusbarHeight': statusBarHeight,
'titlebarHeight': kToolbarHeight,
};
} else if (Platform.isIOS) {
IosDeviceInfo iosInfo = await deviceInfoPlugin.iosInfo;
......@@ -38,7 +40,8 @@ class DeviceInfoHandler extends MessageHandler {
'platform': 'iOS',
'cpuType': '',
'memorySize': (iosInfo.physicalRamSize ~/ (1024 * 1024)).toString(),
'statusBarHeight': statusBarHeight,
'statusbarHeight': statusBarHeight,
'titlebarHeight': kToolbarHeight,
};
} else {
return {};
......
import 'package:appframe/config/routes.dart';
import 'package:appframe/services/dispatcher.dart';
import 'package:url_launcher/url_launcher.dart';
class OpenLinkHandler extends MessageHandler {
@override
......@@ -14,7 +15,18 @@ class OpenLinkHandler extends MessageHandler {
}
int screenType = params['screenType'] ?? 1;
final bool isBrowser = params['isBrowser'] as bool? ?? false;
if (isBrowser) {
final uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(uri, mode: LaunchMode.externalApplication);
} else {
return false;
}
} else {
router.push('/link', extra: {'url': url, 'screenType': screenType});
}
return true;
}
......
......@@ -20,12 +20,13 @@ class TitleBarHandler extends MessageHandler {
throw Exception('参数错误');
}
final bool hidden = params['hidden'] as bool? ?? false;
final String title = params['title'] as String;
final String color = params['color'] as String;
final String bgColor = params['bgColor'] as String;
final String icon = params['icon'] as String;
return _webCubit!.setTitleBar(title, color, bgColor, icon);
return _webCubit!.setTitleBar(hidden, title, color, bgColor, icon);
} finally {
_unfollowCubit();
}
......
......@@ -53,7 +53,7 @@ class WebPage extends StatelessWidget {
child: BlocConsumer<WebCubit, WebState>(
builder: (ctx, state) {
final scaffold = Scaffold(
appBar: _buildAppBar(ctx, state),
appBar: state.showAppBar ? _buildAppBar(ctx, state) : null,
body: Stack(
children: [
state.loaded
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!