parent
dc89f7039f
commit
c73c8b8bc5
|
|
@ -491,9 +491,9 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
|
@ -503,10 +503,11 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 2.2.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq-des";
|
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
|
@ -685,9 +686,9 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
|
@ -697,10 +698,11 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 2.2.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq-des";
|
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
|
|
@ -716,9 +718,9 @@
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
|
CURRENT_PROJECT_VERSION = 59;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = 8AKCJ9LW7D;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
|
|
@ -728,10 +730,11 @@
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/Frameworks",
|
"@executable_path/Frameworks",
|
||||||
);
|
);
|
||||||
|
MARKETING_VERSION = 2.2.0;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
PRODUCT_BUNDLE_IDENTIFIER = uni.UNI85F7A17;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||||
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq-des";
|
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "qa-zsaq";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
VERSIONING_SYSTEM = "apple-generic";
|
VERSIONING_SYSTEM = "apple-generic";
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,12 @@
|
||||||
<string>$(FLUTTER_BUILD_NAME)</string>
|
<string>$(FLUTTER_BUILD_NAME)</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
||||||
<key>LSApplicationQueriesSchemes</key>
|
<key>LSApplicationQueriesSchemes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>baidumap</string>
|
<string>baidumap</string>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>$(FLUTTER_BUILD_NUMBER)</string>
|
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NFCReaderUsageDescription</key>
|
<key>NFCReaderUsageDescription</key>
|
||||||
|
|
@ -77,17 +77,10 @@
|
||||||
<false/>
|
<false/>
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
|
||||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||||
</array>
|
|
||||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
|
||||||
<array>
|
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
|
||||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
|
||||||
</array>
|
</array>
|
||||||
<key>com.apple.developer.nfc.readersession.formats</key>
|
<key>com.apple.developer.nfc.readersession.formats</key>
|
||||||
<array>
|
<array>
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,10 @@ import 'package:flutter/material.dart';
|
||||||
import '../tools/tools.dart';
|
import '../tools/tools.dart';
|
||||||
|
|
||||||
/// 通用列表卡片组件:
|
/// 通用列表卡片组件:
|
||||||
/// - 两两为一组,优先尝试同一行显示左右两列并左/右对齐;
|
/// - 两两为一组,固定左右布局,平均分配宽度
|
||||||
/// - 如放不下,则自动拆成两行,上行左对齐,下行右对齐。
|
/// - 左侧文字左对齐,右侧文字右对齐
|
||||||
|
/// - 文字过多时各自自动换行
|
||||||
|
/// - 如果一行只有一个元素,靠左显示
|
||||||
class DannerRepainItem extends StatelessWidget {
|
class DannerRepainItem extends StatelessWidget {
|
||||||
final String title;
|
final String title;
|
||||||
final List<String> details;
|
final List<String> details;
|
||||||
|
|
@ -50,70 +52,12 @@ class DannerRepainItem extends StatelessWidget {
|
||||||
),
|
),
|
||||||
const Divider(height: 1),
|
const Divider(height: 1),
|
||||||
|
|
||||||
// — 详情区:动态两列/换行 —
|
// — 详情区:固定左右布局 —
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
|
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 15),
|
||||||
child: LayoutBuilder(builder: (context, constraints) {
|
|
||||||
// 间距:你可以根据设计随意调整
|
|
||||||
const double horizontalGap = 20;
|
|
||||||
const double verticalGap = 5;
|
|
||||||
|
|
||||||
List<Widget> rows = [];
|
|
||||||
for (int i = 0; i < details.length; i += 2) {
|
|
||||||
final left = details[i];
|
|
||||||
final right = (i + 1 < details.length) ? details[i + 1] : '';
|
|
||||||
|
|
||||||
// 测量文字宽度
|
|
||||||
final leftPainter = TextPainter(
|
|
||||||
text: TextSpan(text: left, style: HhTextStyleUtils.secondaryTitleStyle),
|
|
||||||
maxLines: 1,
|
|
||||||
textDirection: TextDirection.ltr,
|
|
||||||
)..layout();
|
|
||||||
final rightPainter = TextPainter(
|
|
||||||
text: TextSpan(text: right, style: HhTextStyleUtils.secondaryTitleStyle),
|
|
||||||
maxLines: 1,
|
|
||||||
textDirection: TextDirection.ltr,
|
|
||||||
)..layout();
|
|
||||||
|
|
||||||
final canFitOneLine = right.isNotEmpty &&
|
|
||||||
(leftPainter.width + horizontalGap + rightPainter.width)
|
|
||||||
<= constraints.maxWidth;
|
|
||||||
|
|
||||||
if (right.isNotEmpty && canFitOneLine) {
|
|
||||||
// 同行显示,左右对齐
|
|
||||||
rows.add(Padding(
|
|
||||||
padding: EdgeInsets.only(bottom: verticalGap),
|
|
||||||
child: Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
children: [
|
|
||||||
_DetailText(left),
|
|
||||||
_DetailText(right),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
));
|
|
||||||
} else {
|
|
||||||
// 拆为两行
|
|
||||||
rows.add(Padding(
|
|
||||||
padding: EdgeInsets.only(bottom: verticalGap),
|
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
children: _buildDetailRows(),
|
||||||
children: [
|
|
||||||
// 上行:左对齐
|
|
||||||
_DetailText(left),
|
|
||||||
if (right.isNotEmpty)
|
|
||||||
// 下行:右对齐
|
|
||||||
Align(
|
|
||||||
alignment: Alignment.centerRight,
|
|
||||||
child: _DetailText(right),
|
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Column(children: rows);
|
|
||||||
}),
|
|
||||||
),
|
),
|
||||||
|
|
||||||
// — 底部标签区 —
|
// — 底部标签区 —
|
||||||
|
|
@ -127,21 +71,86 @@ class DannerRepainItem extends StatelessWidget {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 构建详情行
|
||||||
|
List<Widget> _buildDetailRows() {
|
||||||
|
List<Widget> rows = [];
|
||||||
|
for (int i = 0; i < details.length; i += 2) {
|
||||||
|
final left = details[i];
|
||||||
|
final right = (i + 1 < details.length) ? details[i + 1] : '';
|
||||||
|
|
||||||
|
rows.add(
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.only(bottom: 8),
|
||||||
|
child: _DetailRow(left: left, right: right),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Detail 文本封装:
|
/// 详情行组件:固定左右布局,平均分配宽度,各自换行
|
||||||
/// 默认一行不换行;若超出则让整个组件撑宽,由外层判断拆行。
|
/// 如果只有左侧文本,则靠左显示
|
||||||
|
class _DetailRow extends StatelessWidget {
|
||||||
|
final String left;
|
||||||
|
final String right;
|
||||||
|
|
||||||
|
const _DetailRow({
|
||||||
|
Key? key,
|
||||||
|
required this.left,
|
||||||
|
required this.right,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
// 如果右侧文本为空,只显示左侧文本,靠左显示
|
||||||
|
if (right.isEmpty) {
|
||||||
|
return Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: _DetailText(left, textAlign: TextAlign.left),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Row(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// 左侧文本 - 占50%宽度
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: _DetailText(left, textAlign: TextAlign.left),
|
||||||
|
),
|
||||||
|
|
||||||
|
// 中间间距
|
||||||
|
const SizedBox(width: 10),
|
||||||
|
|
||||||
|
// 右侧文本 - 占50%宽度
|
||||||
|
Expanded(
|
||||||
|
flex: 1,
|
||||||
|
child: _DetailText(right, textAlign: TextAlign.right),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Detail 文本封装:支持自动换行和指定的对齐方式
|
||||||
class _DetailText extends StatelessWidget {
|
class _DetailText extends StatelessWidget {
|
||||||
final String text;
|
final String text;
|
||||||
const _DetailText(this.text, {Key? key}) : super(key: key);
|
final TextAlign textAlign;
|
||||||
|
|
||||||
|
const _DetailText(this.text, {
|
||||||
|
Key? key,
|
||||||
|
required this.textAlign,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Text(
|
return Text(
|
||||||
text,
|
text,
|
||||||
style: HhTextStyleUtils.secondaryTitleStyle,
|
style: HhTextStyleUtils.secondaryTitleStyle,
|
||||||
softWrap: false,
|
softWrap: true, // 允许换行
|
||||||
overflow: TextOverflow.visible,
|
textAlign: textAlign, // 使用指定的对齐方式
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -247,7 +247,6 @@ class HomePageState extends State<HomePage> {
|
||||||
// 拉取其他数据 + 隐患列表(当 hiddenList 为空时显示 loading,否则不显示)
|
// 拉取其他数据 + 隐患列表(当 hiddenList 为空时显示 loading,否则不显示)
|
||||||
_fetchData();
|
_fetchData();
|
||||||
_fetchHiddenList(showLoading: hiddenList.isEmpty);
|
_fetchHiddenList(showLoading: hiddenList.isEmpty);
|
||||||
fetchAndSaveBd09(context);
|
|
||||||
/// 清单列表
|
/// 清单列表
|
||||||
final data = await ApiService.getListData();
|
final data = await ApiService.getListData();
|
||||||
if (data['result'] == 'success') {
|
if (data['result'] == 'success') {
|
||||||
|
|
@ -258,6 +257,7 @@ class HomePageState extends State<HomePage> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fetchAndSaveBd09(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _onRefresh() async {
|
Future<void> _onRefresh() async {
|
||||||
|
|
|
||||||
|
|
@ -260,7 +260,10 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
|
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.only(bottom: 10),
|
padding: const EdgeInsets.only(bottom: 10),
|
||||||
|
child: Center( // 关键:把 Row 放到 Center 中
|
||||||
child: Row(
|
child: Row(
|
||||||
|
mainAxisSize: MainAxisSize.min, // Row 根据子项宽度自适应,不再铺满父宽度
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Checkbox(
|
Checkbox(
|
||||||
value: _agreed,
|
value: _agreed,
|
||||||
|
|
@ -271,17 +274,19 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
setState(() {
|
setState(() {
|
||||||
_agreed = value ?? false;
|
_agreed = value ?? false;
|
||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
// (v) => setState(() => _agreed = v ?? false),
|
|
||||||
),
|
),
|
||||||
Expanded(
|
|
||||||
|
// 用 Flexible 而非 Expanded,且给 RichText 一个居中对齐
|
||||||
|
Flexible(
|
||||||
|
fit: FlexFit.loose,
|
||||||
child: RichText(
|
child: RichText(
|
||||||
|
textAlign: TextAlign.center, // 使文本在它的可用宽度内居中
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
const TextSpan(
|
||||||
text: '我已阅读并同意',
|
text: '我已阅读并同意',
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
|
|
@ -292,22 +297,20 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
color: Color(0xFF0D1D8C),
|
color: Color(0xFF0D1D8C),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
recognizer:
|
recognizer: TapGestureRecognizer()
|
||||||
TapGestureRecognizer()
|
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
pushPage(
|
pushPage(
|
||||||
const WebViewPage(
|
const WebViewPage(
|
||||||
name: "用户服务协议",
|
name: "用户服务协议",
|
||||||
url:
|
url: 'http://47.92.102.56:7811/file/xieyi/zsyhxy.htm',
|
||||||
'http://47.92.102.56:7811/file/xieyi/zsyhxy.htm', // 替换为目标网址
|
|
||||||
),
|
),
|
||||||
context,
|
context,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
TextSpan(
|
const TextSpan(
|
||||||
text: '和',
|
text: '和',
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
|
|
@ -318,14 +321,12 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
color: Color(0xFF0D1D8C),
|
color: Color(0xFF0D1D8C),
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
),
|
),
|
||||||
recognizer:
|
recognizer: TapGestureRecognizer()
|
||||||
TapGestureRecognizer()
|
|
||||||
..onTap = () {
|
..onTap = () {
|
||||||
pushPage(
|
pushPage(
|
||||||
const WebViewPage(
|
const WebViewPage(
|
||||||
name: "隐私政策",
|
name: "隐私政策",
|
||||||
url:
|
url: 'http://47.92.102.56:7811/file/xieyi/zsysq.htm',
|
||||||
'http://47.92.102.56:7811/file/xieyi/zsysq.htm', // 替换为目标网址
|
|
||||||
),
|
),
|
||||||
context,
|
context,
|
||||||
);
|
);
|
||||||
|
|
@ -338,6 +339,8 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
),
|
||||||
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
// ),
|
// ),
|
||||||
|
|
|
||||||
|
|
@ -622,6 +622,7 @@ Future<void> openAppStore() async {
|
||||||
|
|
||||||
if (await canLaunchUrl(uri)) {
|
if (await canLaunchUrl(uri)) {
|
||||||
await launchUrl(uri, mode: LaunchMode.externalApplication);
|
await launchUrl(uri, mode: LaunchMode.externalApplication);
|
||||||
|
exit(0);
|
||||||
} else {
|
} else {
|
||||||
// 回退到 https 链接(在浏览器中打开 App Store 页面)
|
// 回退到 https 链接(在浏览器中打开 App Store 页面)
|
||||||
final Uri webUri = Uri.parse('https://itunes.apple.com/app/id$appId');
|
final Uri webUri = Uri.parse('https://itunes.apple.com/app/id$appId');
|
||||||
|
|
@ -630,5 +631,6 @@ Future<void> openAppStore() async {
|
||||||
} else {
|
} else {
|
||||||
throw 'Could not launch App Store for app id $appId';
|
throw 'Could not launch App Store for app id $appId';
|
||||||
}
|
}
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -150,10 +150,7 @@ class _DownloadProgressDialogState extends State<DownloadProgressDialog> {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
|
||||||
onPressed: _onCancel,
|
|
||||||
child: const Text('取消'),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 2.2.0+59
|
version: 2.2.1+60
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.7.0
|
sdk: ^3.7.0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue