Flutter主题美化插件catppuccin_flutter的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter主题美化插件catppuccin_flutter的使用

项目简介

Catppuccin 是一个流行的配色方案,适用于多种编程语言和框架。catppuccin_flutter 是专门为 Flutter 项目设计的主题美化插件,提供了四种不同的主题风格:Latte、Frappé、Macchiato 和 Mocha。每个主题都有丰富的颜色选择,可以帮助你快速为应用添加美观的视觉效果。

预览

以下是 catppuccin_flutter 提供的四种主题风格的预览:

  • 🌻 Latte Latte

  • 🪴 Frappé Frappé

  • 🌺 Macchiato Macchiato

  • 🌿 Mocha Mocha

安装

要使用 catppuccin_flutter 插件,按照以下步骤操作:

  1. catppuccin_flutter 添加到 pubspec.yaml 文件中:

    dependencies:
      # 其他依赖项
      catppuccin_flutter: ^1.0.0
      # 其他依赖项
    
  2. 在终端中运行以下命令以获取依赖项:

    flutter pub get
    

使用方法

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 catppuccin_flutter 插件:

import 'package:catppuccin_flutter/catppuccin_flutter.dart';
import 'package:flutter/material.dart';
import 'dart:math';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: catppuccinTheme(catppuccin.mocha), // 使用 Mocha 主题
      home: const MyHomePage(
        title: 'Catppuccin Theme',
      ),
    );
  }
}

// 获取颜色映射
Map<String, Color> getColorMap(Flavor flavor) {
  return {
    "rosewater": flavor.rosewater,
    "flamingo": flavor.flamingo,
    "pink": flavor.pink,
    "mauve": flavor.mauve,
    "red": flavor.red,
    "maroon": flavor.maroon,
    "peach": flavor.peach,
    "yellow": flavor.yellow,
    "green": flavor.green,
    "teal": flavor.teal,
    "sky": flavor.sky,
    "sapphire": flavor.sapphire,
    "blue": flavor.blue,
    "lavender": flavor.lavender,
    "text": flavor.text,
    "subtext1": flavor.subtext1,
    "subtext0": flavor.subtext0,
    "overlay2": flavor.overlay2,
    "overlay1": flavor.overlay1,
    "overlay0": flavor.overlay0,
    "surface2": flavor.surface2,
    "surface1": flavor.surface1,
    "surface0": flavor.surface0,
    "crust": flavor.crust,
    "mantle": flavor.mantle,
    "base": flavor.base,
  };
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  Widget build(BuildContext context) {
    final flavor = catppuccin.mocha; // 使用 Mocha 主题
    final colorMap = getColorMap(flavor);

    final random = Random(1); // 用于生成随机位置

    return Scaffold(
      appBar: AppBar(
        backgroundColor: flavor.mantle, // 设置 AppBar 的背景颜色
        title: Text(
          title,
          style: TextStyle(color: flavor.text), // 设置标题文字颜色
        ),
      ),
      body: Container(
        color: colorMap['base'], // 设置背景颜色
        child: Padding(
          padding: const EdgeInsets.all(24.0),
          child: Center(
            child: Stack(
              children: colorMap.keys.map((colorName) {
                final colorValue = colorMap[colorName]!;
                final hexColor =
                    '#${colorValue.value.toRadixString(16).substring(2)}'; // 将颜色转换为十六进制字符串

                final radius = 50 + random.nextInt(91).toDouble(); // 随机半径

                final positionX = random.nextDouble() *
                    (MediaQuery.of(context).size.width - 2 * radius); // 随机 X 位置
                final positionY = random.nextDouble() *
                    (MediaQuery.of(context).size.height - 2 * radius); // 随机 Y 位置

                return Positioned(
                  left: positionX,
                  top: positionY,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: <Widget>[
                      Container(
                        width: radius * 2,
                        height: radius * 2,
                        decoration: BoxDecoration(
                          shape: BoxShape.circle, // 圆形容器
                          color: colorValue, // 设置容器颜色
                        ),
                        child: Center(
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: <Widget>[
                              Text(
                                colorName, // 显示颜色名称
                                style: TextStyle(
                                  color: colorValue.computeLuminance() > 0.5
                                      ? Colors.black
                                      : Colors.white, // 根据亮度选择文字颜色
                                ),
                              ),
                              Text(
                                hexColor, // 显示十六进制颜色值
                                style: TextStyle(
                                  color: colorValue.computeLuminance() > 0.5
                                      ? Colors.black
                                      : Colors.white, // 根据亮度选择文字颜色
                                ),
                              ),
                            ],
                          ),
                        ),
                      ),
                    ],
                  ),
                );
              }).toList(),
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用catppuccin_flutter主题美化插件的代码示例。catppuccin_flutter是一个受欢迎的Flutter主题插件,它提供了一套美观且一致的颜色主题。

步骤1:添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  catppuccin_flutter: ^最新版本号  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

步骤2:导入主题

在你的Flutter项目的Dart文件中导入catppuccin_flutter包。

import 'package:catppuccin_flutter/catppuccin_flutter.dart';

步骤3:应用主题

接下来,你需要在你的Flutter应用的MaterialAppCupertinoApp中应用CatppuccinTheme

import 'package:flutter/material.dart';
import 'package:catppuccin_flutter/catppuccin_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: CatppuccinTheme.light(),  // 使用浅色主题
      // theme: CatppuccinTheme.dark(), // 使用深色主题,根据需要选择
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Catppuccin Theme Demo'),
      ),
      body: Center(
        child: Text(
          'Hello, Catppuccin!',
          style: TextStyle(color: CatppuccinColors.cyan),
        ),
      ),
    );
  }
}

在上面的代码中,我们导入了catppuccin_flutter包,并在MaterialApp中使用了CatppuccinTheme.light()来应用浅色主题。你也可以选择使用CatppuccinTheme.dark()来应用深色主题。

步骤4:使用主题颜色

你可以直接使用CatppuccinColors类中的颜色。这些颜色已经定义在插件中,你可以像使用任何其他Flutter颜色一样使用它们。

Text(
  'Hello, Catppuccin!',
  style: TextStyle(color: CatppuccinColors.cyan),  // 使用Catppuccin颜色
)

完整示例

下面是一个完整的示例,展示了如何集成和使用catppuccin_flutter主题美化插件。

import 'package:flutter/material.dart';
import 'package:catppuccin_flutter/catppuccin_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: CatppuccinTheme.light(),  // 使用浅色主题
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Catppuccin Theme Demo'),
        backgroundColor: CatppuccinColors.background,  // 使用Catppuccin背景颜色
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Hello, Catppuccin!',
              style: TextStyle(color: CatppuccinColors.cyan, fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {},
              child: Text('Press Me'),
              style: ButtonStyle(
                backgroundColor: MaterialStateProperty.all(CatppuccinColors.pink),
                textStyle: MaterialStateProperty.all(TextStyle(color: CatppuccinColors.background)),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们展示了如何使用CatppuccinColors中的颜色来美化应用的不同部分,包括AppBar的背景颜色和ElevatedButton的背景及文本颜色。

希望这个示例能够帮助你在Flutter项目中集成和使用catppuccin_flutter主题美化插件!

回到顶部