Flutter材质与光影效果插件flutter_neumo的使用
Flutter材质与光影效果插件flutter_neumo的使用
flutter_neumo
是一个完整的、开箱即用的 Neumo UI 工具包,适用于 Flutter。它支持深色主题并完全可定制。
安装
在你的项目的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_neumo: ^x.y.z
确保将 ^x.y.z
替换为最新版本号。
使用示例
下面是一个简单的示例,展示如何使用 flutter_neumo
插件来创建具有 Neumo 风格的应用程序。
示例代码
import 'package:flutter_neumo/flutter_neumo.dart';
import 'samples/sample_home.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用的根。
[@override](/user/override)
Widget build(BuildContext context) {
return const NeumoApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
themeMode: ThemeMode.light,
theme: NeumoThemeData(
baseColor: Color(0xFFFFFFFF), // 白色作为基础颜色
lightSource: LightSource.topLeft, // 光源从左上角
depth: 10, // 深度为10
),
darkTheme: NeumoThemeData(
baseColor: Color(0xFF3E3E3E), // 深灰色作为基础颜色
lightSource: LightSource.topLeft, // 光源从左上角
depth: 6, // 深度为6
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: NeumoFloatingActionButton(
child: const Icon(Icons.add, size: 30), // 加号图标
onPressed: () {}, // 点击事件
),
backgroundColor: NeumoTheme.baseColor(context), // 背景色
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
NeumoButton(
onPressed: () {
debugPrint("onClick"); // 打印点击事件
},
style: const NeumoStyle(
shape: NeumoShape.flat, // 平面形状
boxShape: NeumoBoxShape.circle(), // 圆形框
),
padding: const EdgeInsets.all(12.0), // 内边距
child: Icon(
Icons.favorite_border, // 心形图标
color: _iconsColor(context), // 图标颜色
),
),
NeumoButton(
margin: const EdgeInsets.only(top: 12), // 上边距
onPressed: () {
NeumoTheme.of(context)?.themeMode = // 切换主题模式
NeumoTheme.isUsingDark(context)
? ThemeMode.light
: ThemeMode.dark;
},
style: NeumoStyle(
shape: NeumoShape.flat, // 平面形状
boxShape: NeumoBoxShape.roundRect(BorderRadius.circular(8)), // 圆角矩形框
),
padding: const EdgeInsets.all(12.0), // 内边距
child: Text(
"Toggle Theme", // 文本
style: TextStyle(color: _textColor(context)), // 文本颜色
)),
NeumoButton(
margin: const EdgeInsets.only(top: 12), // 上边距
onPressed: () {
Navigator.of(context)
.pushReplacement(MaterialPageRoute(builder: (context) {
return const SamplesHome(); // 跳转到示例主页
}));
},
style: NeumoStyle(
shape: NeumoShape.flat, // 平面形状
boxShape: NeumoBoxShape.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 = NeumoTheme.of(context); // 获取当前主题
if (theme?.isUsingDark ?? false) { // 如果使用深色主题
return theme?.current?.accentColor ?? Colors.white; // 返回强调色或白色
} else {
return Colors.black; // 否则返回黑色
}
}
Color _textColor(BuildContext context) {
if (NeumoTheme.isUsingDark(context)) { // 如果使用深色主题
return Colors.white; // 返回白色
} else {
return Colors.black; // 否则返回黑色
}
}
}
更多关于Flutter材质与光影效果插件flutter_neumo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter材质与光影效果插件flutter_neumo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用flutter_neumo
插件来实现材质与光影效果的代码示例。flutter_neumo
是一个用于创建具有深度和光影效果的材质设计的Flutter包。
首先,确保你已经在pubspec.yaml
文件中添加了flutter_neumo
依赖:
dependencies:
flutter:
sdk: flutter
flutter_neumo: ^最新版本号 # 请替换为最新的版本号
然后,运行flutter pub get
来安装依赖。
接下来,我们来看一个具体的代码示例,展示如何使用flutter_neumo
来创建一个具有光影效果的按钮:
import 'package:flutter/material.dart';
import 'package:flutter_neumo/flutter_neumo.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Neumo Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Neumo Demo'),
),
body: Center(
child: NeumoButton(
child: Text('Neumo Button'),
onPressed: () {
print('Button pressed!');
},
neumorphism: Neumorphism.depth(
borderRadius: BorderRadius.circular(20),
color: Colors.grey[300]!,
lightSource: LightSource.topLeft,
intensity: 0.2,
blur: 10,
),
),
),
),
);
}
}
在这个示例中,我们定义了一个简单的Flutter应用,其中包含一个使用NeumoButton
创建的按钮。NeumoButton
是flutter_neumo
包提供的一个具有光影效果的按钮组件。
neumorphism
参数用于配置光影效果,其中包括:
borderRadius
:按钮的圆角半径。color
:按钮的基础颜色。lightSource
:光源位置,这里设置为左上角。intensity
:光影效果的强度。blur
:模糊程度。
你可以根据需要调整这些参数以获得不同的视觉效果。
运行这个示例应用,你将看到一个具有深度和光影效果的按钮。通过调整neumorphism
参数,你可以创建出各种不同的材质和光影效果,使你的Flutter应用更加生动和吸引人。