76f266645d
含 Phase 1.1 IM seq 排序、断线重连、多端已读同步与微信式语音转文字 UI。 排除 node_modules、构建产物、安装包与 .env 密钥。 Co-authored-by: Cursor <cursoragent@cursor.com>
78 lines
2.7 KiB
Dart
78 lines
2.7 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter/services.dart';
|
|
|
|
/// 企业微信 / 微信手机端配色。
|
|
const kInk = Color(0xFF191919);
|
|
const kPaper = Color(0xFFEDEDED);
|
|
const kBind = Color(0xFF267EF0);
|
|
const kBind2 = Color(0xFF1A6FD4);
|
|
const kWeGreen = Color(0xFF07C160);
|
|
const kMute = Color(0xFF888888);
|
|
const kLine = Color(0xFFE5E5E5);
|
|
const kBubbleMine = Color(0xFFC9E7FF);
|
|
const kDanger = Color(0xFFFA5151);
|
|
const kHeader = Colors.white;
|
|
|
|
ThemeData buildTheme() {
|
|
const scheme = ColorScheme.light(
|
|
primary: kBind,
|
|
secondary: kBind2,
|
|
surface: Colors.white,
|
|
onPrimary: Colors.white,
|
|
onSurface: kInk,
|
|
);
|
|
return ThemeData(
|
|
colorScheme: scheme,
|
|
useMaterial3: true,
|
|
scaffoldBackgroundColor: kPaper,
|
|
splashFactory: NoSplash.splashFactory,
|
|
highlightColor: const Color(0x14267EF0),
|
|
pageTransitionsTheme: const PageTransitionsTheme(
|
|
builders: {
|
|
TargetPlatform.android: CupertinoPageTransitionsBuilder(),
|
|
TargetPlatform.iOS: CupertinoPageTransitionsBuilder(),
|
|
TargetPlatform.linux: CupertinoPageTransitionsBuilder(),
|
|
TargetPlatform.windows: CupertinoPageTransitionsBuilder(),
|
|
},
|
|
),
|
|
fontFamily: null,
|
|
appBarTheme: const AppBarTheme(
|
|
backgroundColor: kHeader,
|
|
foregroundColor: kInk,
|
|
elevation: 0,
|
|
scrolledUnderElevation: 0,
|
|
centerTitle: true,
|
|
titleTextStyle: TextStyle(color: kInk, fontSize: 17, fontWeight: FontWeight.w600),
|
|
systemOverlayStyle: SystemUiOverlayStyle(
|
|
statusBarColor: Colors.transparent,
|
|
statusBarIconBrightness: Brightness.dark,
|
|
),
|
|
),
|
|
dividerColor: kLine,
|
|
cardTheme: const CardThemeData(
|
|
color: Colors.white,
|
|
elevation: 0,
|
|
margin: EdgeInsets.zero,
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(8))),
|
|
),
|
|
inputDecorationTheme: InputDecorationTheme(
|
|
filled: true,
|
|
fillColor: Colors.white,
|
|
hintStyle: const TextStyle(color: Color(0xFFB2B2B2), fontSize: 15),
|
|
contentPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10),
|
|
border: OutlineInputBorder(borderRadius: BorderRadius.circular(6), borderSide: BorderSide.none),
|
|
enabledBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(6), borderSide: BorderSide.none),
|
|
focusedBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(6), borderSide: const BorderSide(color: kBind)),
|
|
),
|
|
filledButtonTheme: FilledButtonThemeData(
|
|
style: FilledButton.styleFrom(
|
|
backgroundColor: kBind,
|
|
foregroundColor: Colors.white,
|
|
elevation: 0,
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)),
|
|
),
|
|
),
|
|
);
|
|
}
|