Flutter拟物风格设计插件flutter_neumorphic_plus的使用

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

Flutter拟物风格设计插件flutter_neumorphic_plus的使用

概述

flutter_neumorphic_plus 是一个完整的、可直接使用的 Neumorphic UI 工具包,适用于Flutter。它派生自 gsmlg-dev/Flutter-Neumorphic,可以在浏览器上尝试其效果:👉 在线体验 🌐。

flutter_logo

⚙️ 安装

添加依赖

pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_neumorphic_plus: ^3.3.0

// 需要 Flutter 版本 >= 3.0.0

然后,在你的 Dart 文件中导入:

import 'package:flutter_neumorphic_plus/flutter_neumorphic.dart';

示例代码

下面是一个完整的示例,展示了如何使用 flutter_neumorphic_plus 创建一个带有拟物风格按钮和主题切换功能的应用程序。

main.dart

import 'package:flutter_neumorphic_plus/flutter_neumorphic.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return NeumorphicApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      themeMode: ThemeMode.light,
      theme: NeumorphicThemeData(
        baseColor: Color(0xFFFFFFFF),
        lightSource: LightSource.topLeft,
        depth: 10,
      ),
      darkTheme: NeumorphicThemeData(
        baseColor: Color(0xFF3E3E3E),
        lightSource: LightSource.topLeft,
        depth: 6,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  MyHomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: NeumorphicFloatingActionButton(
        child: Icon(Icons.add, size: 30),
        onPressed: () {},
      ),
      backgroundColor: NeumorphicTheme.baseColor(context),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            NeumorphicButton(
              onPressed: () {
                print("onClick");
              },
              style: NeumorphicStyle(
                shape: NeumorphicShape.flat,
                boxShape: NeumorphicBoxShape.circle(),
              ),
              padding: const EdgeInsets.all(12.0),
              child: Icon(
                Icons.favorite_border,
                color: _iconsColor(context),
              ),
            ),
            NeumorphicButton(
              margin: EdgeInsets.only(top: 12),
              onPressed: () {
                NeumorphicTheme.of(context)!.themeMode =
                    NeumorphicTheme.isUsingDark(context)
                        ? ThemeMode.light
                        : ThemeMode.dark;
              },
              style: NeumorphicStyle(
                shape: NeumorphicShape.flat,
                boxShape: NeumorphicBoxShape.roundRect(BorderRadius.circular(8)),
              ),
              padding: const EdgeInsets.all(12.0),
              child: Text(
                "Toggle Theme",
                style: TextStyle(color: _textColor(context)),
              ),
            ),
            NeumorphicButton(
              margin: EdgeInsets.only(top: 12),
              onPressed: () {
                Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context) {
                  return FullSampleHomePage();
                }));
              },
              style: NeumorphicStyle(
                shape: NeumorphicShape.flat,
                boxShape: NeumorphicBoxShape.roundRect(BorderRadius.circular(8)),
              ),
              padding: const EdgeInsets.all(12.0),
              child: Text(
                "Go to full sample",
                style: TextStyle(color: _textColor(context)),
              ),
            ),
          ],
        ),
      ),
    );
  }

  Color? _iconsColor(BuildContext context) {
    final theme = NeumorphicTheme.of(context);
    if (theme!.isUsingDark) {
      return theme.current!.accentColor;
    } else {
      return null;
    }
  }

  Color _textColor(BuildContext context) {
    if (NeumorphicTheme.isUsingDark(context)) {
      return Colors.white;
    } else {
      return Colors.black;
    }
  }
}

解释

  1. NeumorphicApp: 设置应用的主题,包括浅色和深色模式。
  2. Scaffold: 使用 NeumorphicTheme.baseColor(context) 设置背景颜色。
  3. NeumorphicFloatingActionButton: 创建一个带有加号图标的浮动按钮。
  4. NeumorphicButton: 创建多个拟物风格的按钮,包括圆形按钮、矩形按钮,并提供了切换主题和跳转到完整示例页面的功能。
  5. _iconsColor 和 _textColor: 根据当前主题动态设置图标和文本的颜色。

通过以上代码,你可以创建一个具有拟物风格的Flutter应用程序,并且可以根据需要进行扩展和自定义。希望这个示例对你有所帮助!


更多关于Flutter拟物风格设计插件flutter_neumorphic_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter拟物风格设计插件flutter_neumorphic_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 flutter_neumorphic_plus 插件来实现拟物风格设计的代码示例。flutter_neumorphic_plus 是一个强大的 Flutter 插件,它允许你创建具有深度和真实感的拟物风格界面。

首先,确保你已经在 pubspec.yaml 文件中添加了 flutter_neumorphic_plus 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_neumorphic_plus: ^latest_version  # 请替换为最新版本号

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

下面是一个简单的示例代码,展示了如何使用 flutter_neumorphic_plus 来创建一个拟物风格的按钮:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Neumorphic Plus Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Neumorphic Plus Demo'),
        ),
        body: Center(
          child: NeumorphicButton(
            onPressed: () {
              // 按钮点击事件
              print('Button pressed!');
            },
            child: Text('Neu Button'),
            style: NeumorphicStyle(
              depth: 5, // 深度
              intensity: 0.5, // 强度
              surfaceColor: NeumorphicColor(base: Colors.white, shade: 0.3), // 表面颜色
              color: NeumorphicColor(base: Colors.blue, shade: 0.8), // 按钮颜色
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 引入必要的包

    import 'package:flutter/material.dart';
    import 'package:flutter_neumorphic_plus/flutter_neumorphic_plus.dart';
    
  2. 创建主应用

    void main() {
      runApp(MyApp());
    }
    
  3. 定义主应用组件

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Neumorphic Plus Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: Scaffold(
            appBar: AppBar(
              title: Text('Flutter Neumorphic Plus Demo'),
            ),
            body: Center(
              child: NeumorphicButton(
                onPressed: () {
                  print('Button pressed!');
                },
                child: Text('Neu Button'),
                style: NeumorphicStyle(
                  depth: 5,
                  intensity: 0.5,
                  surfaceColor: NeumorphicColor(base: Colors.white, shade: 0.3),
                  color: NeumorphicColor(base: Colors.blue, shade: 0.8),
                ),
              ),
            ),
          ),
        );
      }
    }
    

在这个组件中,我们创建了一个 NeumorphicButton,并为其设置了深度、强度、表面颜色和按钮颜色等属性。

  • depth 属性控制按钮的立体深度。
  • intensity 属性控制光照强度,影响表面的亮暗变化。
  • surfaceColorcolor 属性分别定义了按钮的表面颜色和主体颜色。

通过这些属性,你可以轻松地创建出具有深度和真实感的拟物风格按钮。

这个示例展示了 flutter_neumorphic_plus 的基本用法,你可以根据需要进一步自定义和扩展你的拟物风格界面。

回到顶部