ecp_theme 2.0.3
ecp_theme: ^2.0.3 copied to clipboard
翼协云主题管理包,提供 Light/Dark 主题配置、Color/Theme 扩展、通用尺寸规范及文本组件封装,内部项目通用的 Flutter 主题工具库。
example/lib/main.dart
import 'package:device_preview/device_preview.dart';
import 'package:ecp_theme/ecp_theme.dart';
import 'package:example/pages/color_page.dart';
import 'package:example/pages/defalut_test_page.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'pages/color_scheme_page.dart';
void main() {
runApp(
DevicePreview(
builder: (context) => const MyApp(),
enabled: true,
),
);
}
var divider = const Divider();
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return ScreenUtilInit(
designSize: Dimens.designSize,
useInheritedMediaQuery: !kReleaseMode,
builder: (context, widget) {
var child = MaterialApp(
title: 'Flutter Demo',
theme: Themes.light,
darkTheme: Themes.dark,
home: const HomePage(),
);
return DevicePreview.appBuilder(context, child);
});
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("首页"),
),
body: ListView(
padding: const EdgeInsets.all(20),
children: [
pageItem(context, const ColorPage(), "Colors"),
divider,
pageItem(context, const ColorSchemePage(), "ColorScheme"),
divider,
pageItem(
context,
const DefaultTestPage(),
"缺省页",
),
],
),
);
}
Widget pageItem(BuildContext context, Widget page, String pageName) {
var scheme = Theme.of(context).colorScheme;
return InkWell(
onTap: () => Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => page)),
child: Container(
color: scheme.surface,
padding: const EdgeInsets.all(20),
child: Center(
child: Text(
pageName,
style: TextStyle(color: scheme.onSurface),
),
),
),
);
}
}