Flutter拟物风格设计插件flutter_neumorphic_plus的使用
Flutter拟物风格设计插件flutter_neumorphic_plus的使用
概述
flutter_neumorphic_plus
是一个完整的、可直接使用的 Neumorphic UI 工具包,适用于Flutter。它派生自 gsmlg-dev/Flutter-Neumorphic,可以在浏览器上尝试其效果:👉 在线体验 🌐。
⚙️ 安装
添加依赖
在 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;
}
}
}
解释
- NeumorphicApp: 设置应用的主题,包括浅色和深色模式。
- Scaffold: 使用
NeumorphicTheme.baseColor(context)
设置背景颜色。 - NeumorphicFloatingActionButton: 创建一个带有加号图标的浮动按钮。
- NeumorphicButton: 创建多个拟物风格的按钮,包括圆形按钮、矩形按钮,并提供了切换主题和跳转到完整示例页面的功能。
- _iconsColor 和 _textColor: 根据当前主题动态设置图标和文本的颜色。
通过以上代码,你可以创建一个具有拟物风格的Flutter应用程序,并且可以根据需要进行扩展和自定义。希望这个示例对你有所帮助!
更多关于Flutter拟物风格设计插件flutter_neumorphic_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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), // 按钮颜色
),
),
),
),
);
}
}
在这个示例中,我们做了以下几件事:
-
引入必要的包:
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), ), ), ), ), ); } }
在这个组件中,我们创建了一个 NeumorphicButton
,并为其设置了深度、强度、表面颜色和按钮颜色等属性。
depth
属性控制按钮的立体深度。intensity
属性控制光照强度,影响表面的亮暗变化。surfaceColor
和color
属性分别定义了按钮的表面颜色和主体颜色。
通过这些属性,你可以轻松地创建出具有深度和真实感的拟物风格按钮。
这个示例展示了 flutter_neumorphic_plus
的基本用法,你可以根据需要进一步自定义和扩展你的拟物风格界面。