Flutter主题管理插件flutter_themez的使用

Flutter主题管理插件flutter_themez的使用

pub package

特性

  • Light
  • Dark

额外信息

生成的文档提供了所有可用功能的概述。

完整示例Demo

以下是一个完整的示例代码,展示了如何使用flutter_themez插件来管理应用的主题。

import 'package:flutter/material.dart';
import 'package:flutter_themez/flutter_themez.dart'; // 导入flutter_themez插件

void main() {
  runApp(const App()); // 运行App组件
}

class App extends StatelessWidget {
  const App({super.key}); // 构造函数

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 初始化FlutterThemez实例,并设置主颜色和次颜色
    final FlutterThemez theme = FlutterThemez(
      primaryColor: const Color(0xFF000000), // 主颜色为黑色
      secondaryColor: const Color(0xFF999999), // 次颜色为灰色
    );

    // 返回MaterialApp组件,配置应用的主题
    return MaterialApp(
      home: const Scaffold(
        body: Center(
          child: Text('Flutter Themez!'), // 显示文本
        ),
      ),
      darkTheme: theme.dark(), // 设置暗色主题
      theme: theme.light(), // 设置亮色主题
    );
  }
}

更多关于Flutter主题管理插件flutter_themez的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter主题管理插件flutter_themez的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 flutter_themez 插件来管理 Flutter 应用主题的示例代码。flutter_themez 是一个用于在 Flutter 中动态切换主题的插件。

首先,你需要在 pubspec.yaml 文件中添加 flutter_themez 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_themez: ^x.y.z  # 请使用最新版本号替换 x.y.z

然后运行 flutter pub get 来获取依赖。

1. 设置基础主题

在你的 Flutter 项目中,创建两个主题文件,比如 light_theme.dartdark_theme.dart

light_theme.dart:

import 'package:flutter/material.dart';

final LightTheme lightTheme = LightTheme(
  colorScheme: ColorScheme.light(
    primary: Colors.blue,
    onPrimary: Colors.white,
    secondary: Colors.amber,
    onSecondary: Colors.black,
    background: Colors.white,
    onBackground: Colors.black,
    surface: Colors.white,
    onSurface: Colors.black,
  ),
  brightness: Brightness.light,
  textTheme: TextTheme(
    bodyText1: TextStyle(color: Colors.black),
    // 其他文本样式
  ),
  // 其他主题配置
);

dark_theme.dart:

import 'package:flutter/material.dart';

final DarkTheme darkTheme = DarkTheme(
  colorScheme: ColorScheme.dark(
    primary: Colors.blueGrey,
    onPrimary: Colors.white,
    secondary: Colors.amberAccent,
    onSecondary: Colors.black,
    background: Colors.black,
    onBackground: Colors.white,
    surface: Colors.black,
    onSurface: Colors.white,
  ),
  brightness: Brightness.dark,
  textTheme: TextTheme(
    bodyText1: TextStyle(color: Colors.white),
    // 其他文本样式
  ),
  // 其他主题配置
);

2. 配置 flutter_themez

在你的主文件(比如 main.dart)中,配置 flutter_themez 并应用主题。

import 'package:flutter/material.dart';
import 'package:flutter_themez/flutter_themez.dart';
import 'light_theme.dart';
import 'dark_theme.dart';

void main() {
  runApp(
    ThemeZProvider(
      themes: {
        'light': lightTheme.toThemeData(),
        'dark': darkTheme.toThemeData(),
      },
      defaultTheme: 'light', // 设置默认主题
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter ThemeZ Demo',
      themeMode: ThemeMode.system, // 或者 ThemeMode.light / ThemeMode.dark
      theme: Theme.of(context), // 使用 ThemeZProvider 提供的主题
      home: ThemeSwitcherScaffold(
        // 提供一个界面来切换主题
        child: HomeScreen(),
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final themeZ = ThemeZ.of(context);
    
    return Scaffold(
      appBar: AppBar(
        title: Text('ThemeZ Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Current Theme: ${themeZ.currentThemeName}',
              style: Theme.of(context).textTheme.headline4,
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => themeZ.setTheme('light'),
              child: Text('Switch to Light'),
            ),
            SizedBox(height: 10),
            ElevatedButton(
              onPressed: () => themeZ.setTheme('dark'),
              child: Text('Switch to Dark'),
            ),
          ],
        ),
      ),
    );
  }
}

3. 运行应用

运行你的 Flutter 应用,你应该能够看到一个带有两个按钮的界面,一个用于切换到浅色主题,另一个用于切换到深色主题。点击按钮后,主题将动态更改。

这个示例展示了如何使用 flutter_themez 来管理 Flutter 应用中的主题。你可以根据自己的需求进一步定制和扩展主题。

回到顶部