Initial commit: 风影 OA 全栈源码(API/Web/Flutter/IM)
含 Phase 1.1 IM seq 排序、断线重连、多端已读同步与微信式语音转文字 UI。 排除 node_modules、构建产物、安装包与 .env 密钥。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
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)),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user