Flutter仿拟物风格UI插件gusto_neumorphic的使用
Flutter仿拟物风格UI插件gusto_neumorphic的使用
简介
flutter_neumorphic
是一个完整的、即用型的Neumorphic UI工具包,适用于Flutter应用。它提供了多种Neumorphic风格的小部件,帮助开发者快速构建现代感十足的应用界面。
示例与演示
- 在线试用:Flutter-Neumorphic Demo
- GitHub项目地址:Flutter-Neumorphic
安装
在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_neumorphic: ^3.0.3
然后在你的 .dart
文件中导入:
import 'package:flutter_neumorphic/flutter_neumorphic.dart';
常用小部件
以下是 flutter_neumorphic
提供的一些常用小部件及其描述:
预览 | 小部件 | 描述 |
---|---|---|
Neumorphic | 主要的Neumorphic容器,根据光源和深度添加白色/黑色渐变 | |
NeumorphicButton | 用户交互时通过深度变化响应的按钮 | |
NeumorphicRadio | 一组Neumorphic按钮,每次只能选择一个 | |
NeumorphicCheckbox | 可选中/取消选中的按钮,选中时显示强调色 |
更多小部件请参考 Widgets 部分。
示例代码
以下是一个简单的示例,展示了如何使用 flutter_neumorphic
构建一个带有Neumorphic风格的主页面:
import 'package:flutter/material.dart';
import 'package:flutter_neumorphic/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 {
@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: () {
// Navigate to full sample page
},
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 Colors.black;
}
}
Color _textColor(BuildContext context) {
if (NeumorphicTheme.isUsingDark(context)) {
return Colors.white;
} else {
return Colors.black;
}
}
}
自定义形状与主题
flutter_neumorphic
还支持自定义形状和主题设置,具体可以参考 Custom Shape 和 Neumorphic Theme 部分。
总结
通过使用 flutter_neumorphic
,你可以轻松地为你的Flutter应用添加现代感十足的Neumorphic风格。无论是按钮、复选框还是进度条,这个库都能提供丰富的组件支持,帮助你快速实现设计需求。
以上内容涵盖了 `flutter_neumorphic` 的安装、基本使用方法以及一些常用的组件示例,希望对你有所帮助!
更多关于Flutter仿拟物风格UI插件gusto_neumorphic的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter仿拟物风格UI插件gusto_neumorphic的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用gusto_neumorphic
插件来创建仿拟物风格UI的示例代码。gusto_neumorphic
是一个用于实现仿拟物(Neumorphism)设计的Flutter插件,它提供了一系列小部件来创建具有深度和立体感的界面元素。
首先,确保你已经在pubspec.yaml
文件中添加了gusto_neumorphic
依赖项:
dependencies:
flutter:
sdk: flutter
gusto_neumorphic: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖项。
接下来,我们来看一个完整的示例代码,展示如何使用gusto_neumorphic
来创建一个简单的仿拟物风格UI:
import 'package:flutter/material.dart';
import 'package:gusto_neumorphic/gusto_neumorphic.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Neumorphic UI Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: NeumorphicDemo(),
);
}
}
class NeumorphicDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Neumorphic UI Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
NeumorphicButton(
onPressed: () {},
child: Text('Neumorphic Button'),
style: NeumorphicStyle(
depth: 5,
intensity: 0.2,
shape: NeumorphicShape.convex,
color: NeumorphicColor(base: Colors.white, shadow: Colors.grey[200]!),
),
),
SizedBox(height: 20),
NeumorphicCard(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Neumorphic Card',
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
SizedBox(height: 10),
Text(
'This is a neumorphic styled card. It has a soft, sunken look and feel.',
style: TextStyle(fontSize: 16),
),
],
),
),
margin: EdgeInsets.all(16),
style: NeumorphicStyle(
depth: 10,
intensity: 0.3,
shape: NeumorphicShape.roundedRect,
borderRadius: BorderRadius.circular(16),
color: NeumorphicColor(base: Colors.white, shadow: Colors.grey[300]!),
),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个包含NeumorphicButton
和NeumorphicCard
的简单界面。NeumorphicButton
和NeumorphicCard
都使用了NeumorphicStyle
来自定义它们的深度、强度、形状和颜色。
NeumorphicButton
:一个具有仿拟物风格的按钮,点击时没有实际功能,但展示了如何设置按钮的样式。NeumorphicCard
:一个具有仿拟物风格的卡片,内部包含了一些文本,展示了如何设置卡片的样式,包括边距、圆角等。
你可以根据需要调整NeumorphicStyle
的属性来创建不同的视觉效果。希望这个示例能帮你更好地理解如何在Flutter中使用gusto_neumorphic
插件来创建仿拟物风格的UI。