Commit 8d27884d by tanghuan

协议占位、统一iOS和Android的操作风格等

1 parent ec067c1e
import 'dart:io';
import 'package:appframe/l10n/gen/app_localizations.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart'; // 添加这行
import 'config/routes.dart';
......@@ -11,39 +7,11 @@ class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) => Platform.isIOS
? CupertinoApp.router(
routerConfig: router,
title: '班小二',
theme: const CupertinoThemeData(primaryColor: CupertinoColors.systemBlue),
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
// // === 为 iOS 添加本地化配置 ===
// localizationsDelegates: const [
// GlobalMaterialLocalizations.delegate, // 为Material组件提供本地化
// GlobalCupertinoLocalizations.delegate, // 为Cupertino组件提供本地化
// GlobalWidgetsLocalizations.delegate, // 定义文本方向等
// ],
// supportedLocales: const [
// Locale('zh', 'CN'), // 中文(中国)
// Locale('en', 'US'), // 英语(美国)
// ],
)
: MaterialApp.router(
Widget build(BuildContext context) => MaterialApp.router(
localizationsDelegates: AppLocalizations.localizationsDelegates,
supportedLocales: AppLocalizations.supportedLocales,
routerConfig: router,
title: '班小二',
theme: ThemeData(primarySwatch: Colors.blue),
// // === 为 iOS 添加本地化配置 ===
// localizationsDelegates: const [
// GlobalMaterialLocalizations.delegate, // 为Material组件提供本地化
// GlobalCupertinoLocalizations.delegate, // 为Cupertino组件提供本地化
// GlobalWidgetsLocalizations.delegate, // 定义文本方向等
// ],
// supportedLocales: const [
// Locale('zh', 'CN'), // 中文(中国)
// Locale('en', 'US'), // 英语(美国)
// ],
);
}
......@@ -11,6 +11,7 @@ class LinkPage extends StatelessWidget {
Widget build(BuildContext buildContext) {
final Map<String, dynamic>? extraData = GoRouterState.of(buildContext).extra as Map<String, dynamic>?;
final String? url = extraData?['url'];
final String? title = extraData?['title'];
return BlocProvider(
create: (context) => LinkCubit(LinkState(loaded: false, url: url!)),
......@@ -23,15 +24,10 @@ class LinkPage extends StatelessWidget {
},
child: Scaffold(
appBar: AppBar(
title: Text('adv'),
title: Text(title ?? '', style: TextStyle(color: Colors.white, fontSize: 18)),
centerTitle: true,
automaticallyImplyLeading: false,
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () async {
await ctx.read<LinkCubit>().handleBack(ctx);
},
),
backgroundColor: Color(0xFF7691FA),
iconTheme: IconThemeData(color: Colors.white),
),
body: state.loaded
? SizedBox(
......
......@@ -2,6 +2,7 @@ import 'package:appframe/bloc/web_cubit.dart';
import 'package:appframe/config/constant.dart';
import 'package:appframe/config/evn_config.dart';
import 'package:appframe/config/locator.dart';
import 'package:appframe/config/routes.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
......@@ -186,7 +187,7 @@ class WebPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Card(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2), // 减小垂直间距
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
......@@ -194,26 +195,22 @@ class WebPage extends StatelessWidget {
children: [
ListTile(
leading: const Icon(Icons.lock, size: 20),
// 减小图标大小
title: const Text('账号与安全', style: TextStyle(fontSize: 14)),
// 设置字体大小
onTap: () {
Navigator.pop(ctx);
ctx.read<WebCubit>().goAccount();
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
trailing: Icon(Icons.arrow_forward_ios, size: 14),
// 调整内边距
dense: true,
// 使用紧凑布局
visualDensity: VisualDensity.compact, // 视觉密度设为紧凑
visualDensity: VisualDensity.compact,
),
],
),
),
SizedBox(height: 8),
Card(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2), // 减小垂直间距
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
......@@ -221,18 +218,50 @@ class WebPage extends StatelessWidget {
children: [
ListTile(
leading: const Icon(Icons.book_outlined, size: 20),
// 减小图标大小
title: const Text('用户协议', style: TextStyle(fontSize: 14)),
// 设置字体大小
title: const Text('用户协议A', style: TextStyle(fontSize: 14)),
onTap: () {
Navigator.pop(ctx);
router.push(
'/link',
extra: {'url': 'https://www.baidu.com/duty/', 'title': '用户协议A'},
);
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
trailing: Icon(Icons.arrow_forward_ios, size: 14),
// 调整内边距
dense: true,
// 使用紧凑布局
visualDensity: VisualDensity.compact, // 视觉密度设为紧凑
visualDensity: VisualDensity.compact,
),
Divider(height: 1, thickness: 0.5, indent: 16, endIndent: 16),
ListTile(
leading: const Icon(Icons.book_outlined, size: 20),
title: const Text('用户协议B', style: TextStyle(fontSize: 14)),
onTap: () {
Navigator.pop(ctx);
router.push(
'/link',
extra: {'url': 'https://www.baidu.com/duty/', 'title': '用户协议B'},
);
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
trailing: Icon(Icons.arrow_forward_ios, size: 14),
dense: true,
visualDensity: VisualDensity.compact,
),
Divider(height: 1, thickness: 0.5, indent: 16, endIndent: 16),
ListTile(
leading: const Icon(Icons.book_outlined, size: 20),
title: const Text('用户协议C', style: TextStyle(fontSize: 14)),
onTap: () {
Navigator.pop(ctx);
router.push(
'/link',
extra: {'url': 'https://www.baidu.com/duty/', 'title': '用户协议C'},
);
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
trailing: Icon(Icons.arrow_forward_ios, size: 14),
dense: true,
visualDensity: VisualDensity.compact,
),
],
),
......@@ -252,10 +281,11 @@ class WebPage extends StatelessWidget {
Navigator.pop(ctx);
_showClearCacheDialog(ctx);
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
dense: true,
visualDensity: VisualDensity.compact,
),
Divider(height: 1, thickness: 0.5, indent: 16, endIndent: 16),
ListTile(
leading: const Icon(Icons.logout, size: 20),
title: const Text('退出登录', style: TextStyle(fontSize: 14)),
......@@ -263,7 +293,7 @@ class WebPage extends StatelessWidget {
Navigator.pop(ctx);
ctx.read<WebCubit>().logout();
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
dense: true,
visualDensity: VisualDensity.compact,
),
......@@ -272,7 +302,7 @@ class WebPage extends StatelessWidget {
),
SizedBox(height: 8),
Card(
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2), // 减小垂直间距
margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 2),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6),
),
......@@ -280,18 +310,14 @@ class WebPage extends StatelessWidget {
children: [
ListTile(
leading: const Icon(Icons.timeline, size: 20),
// 减小图标大小
title: const Text('切换日志模式', style: TextStyle(fontSize: 14)),
// 设置字体大小
onTap: () {
Navigator.pop(ctx);
ctx.read<WebCubit>().handleToggleDebug();
},
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 4),
// trailing: Icon(Icons.arrow_forward_ios, size: 14),
// 调整内边距
dense: true,
// 使用紧凑布局
visualDensity: VisualDensity.compact, // 视觉密度设为紧凑
),
],
......@@ -304,7 +330,7 @@ class WebPage extends StatelessWidget {
const Divider(),
Container(
width: double.infinity,
// padding: const EdgeInsets.all(16.0),
padding: const EdgeInsets.all(1),
child: Center(
child: Column(
children: [
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!