Flutter随机抽象头像生成插件random_abstract_avatar的使用
Flutter随机抽象头像生成插件random_abstract_avatar的使用
生成独特的抽象用户头像
特性
- ✨ 高度可定制化:允许自定义颜色和装饰
- ♻️ 混合匹配:可以选择用于生成的几何形状
- ✔️ 离线使用:由于不使用外部服务(如Gravatar),因此在无网络连接的情况下也可以正常工作
- 🚀 快速生成:借助hashlib和dart UI画布,头像图像可以即时生成
开始使用
包含在项目中
import 'package:random_abstract_avatar/random_abstract_avatar.dart';
基本组件
Avatar(source: 'test')
基本示例
class _TestAppState extends State<TestApp> {
final _controller = TextEditingController(text: 'flutter!');
[@override](/user/override)
void initState() {
super.initState();
_controller.addListener(() {
setState(() {});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: 200,
child: TextField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Username',
),
controller: _controller,
)),
const SizedBox(width: 16),
Avatar(
source: _controller.text,
foregroundColor: Colors.pink,
backgroundColor: Colors.black,
size: 64,
),
]))));
}
}
示例项目
一个示例项目可以在存储库的example
文件夹中找到。
常见问题解答
- 我设置了渐变/装饰图像,但未显示,为什么?
- 如果你使用了装饰来设置头像,确保
backgroundColor
被设置为透明,否则它将不会显示。
- 如果你使用了装饰来设置头像,确保
贡献
欢迎通过提交拉取请求来支持我并解决开放的问题。
捐赠
如果您能够支持我的工作,我将非常感激。谢谢。
示例代码
import 'package:flutter/material.dart';
import 'package:random_abstract_avatar/random_abstract_avatar.dart';
void main() {
runApp(const TestApp());
}
class TestApp extends StatefulWidget {
const TestApp({super.key});
[@override](/user/override)
State<StatefulWidget> createState() => _TestAppState();
}
class _TestAppState extends State<TestApp> {
final _controller = TextEditingController(text: 'flutter!');
[@override](/user/override)
void initState() {
super.initState();
_controller.addListener(() {
setState(() {});
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Row(children: [
SizedBox(
width: 200,
child: TextField(
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: 'Username',
),
controller: _controller,
),
),
const SizedBox(width: 16),
Avatar(
source: _controller.text,
size: 64,
borderRadius: 0,
backgroundColor: Colors.black,
foregroundColor: Colors.redAccent,
primitives: const [AvatarPrimitive.circle],
decoration: const BoxDecoration(
boxShadow: [BoxShadow(blurRadius: 8)],
),
),
const SizedBox(width: 16),
Avatar(
source: '${_controller.text}3-30r',
size: 64,
borderRadius: 8,
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.pink.shade100, Colors.blue.shade100],
begin: Alignment.topCenter,
end: Alignment.bottomRight),
boxShadow: const [BoxShadow(blurRadius: 8)],
),
backgroundColor: Colors.transparent,
foregroundColor: Colors.grey,
primitives: const [AvatarPrimitive.triangle],
),
const SizedBox(width: 16),
Avatar(
source: '${_controller.text}d310',
size: 64,
borderRadius: 16,
decoration: const BoxDecoration(
image: DecorationImage(image: AssetImage('assets/marble.png')),
boxShadow: [BoxShadow(blurRadius: 8)],
),
backgroundColor: Colors.transparent,
foregroundColor: Colors.grey.shade700,
primitives: const [AvatarPrimitive.circle, AvatarPrimitive.square],
),
const SizedBox(width: 16),
Avatar(
source: '${_controller.text}ofies39q',
size: 64,
borderRadius: 24,
decoration: const BoxDecoration(
boxShadow: [BoxShadow(blurRadius: 8)],
),
backgroundColor: Colors.lime,
foregroundColor: Colors.grey.shade700,
primitives: const [AvatarPrimitive.circle, AvatarPrimitive.square],
),
const SizedBox(width: 16),
Avatar(
source: '${_controller.text}ererre',
size: 64,
borderRadius: 32,
decoration: const BoxDecoration(
boxShadow: [BoxShadow(blurRadius: 8)],
),
backgroundColor: Colors.black,
foregroundColor: Colors.purpleAccent,
primitives: const [AvatarPrimitive.circle, AvatarPrimitive.square],
),
]))));
}
}
更多关于Flutter随机抽象头像生成插件random_abstract_avatar的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter随机抽象头像生成插件random_abstract_avatar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用random_abstract_avatar
插件来生成随机抽象头像的代码示例。这个插件可以帮助你快速生成具有不同样式和颜色的抽象头像。
首先,确保你已经在pubspec.yaml
文件中添加了random_abstract_avatar
依赖项:
dependencies:
flutter:
sdk: flutter
random_abstract_avatar: ^最新版本号 # 请替换为最新的版本号
然后,运行flutter pub get
来安装依赖项。
接下来,你可以在你的Flutter应用中使用这个插件。以下是一个完整的示例代码,展示如何生成并显示一个随机抽象头像:
import 'package:flutter/material.dart';
import 'package:random_abstract_avatar/random_abstract_avatar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Random Abstract Avatar Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Random Abstract Avatar Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 使用 RandomAbstractAvatar.generate 方法生成随机抽象头像
Image.memory(
RandomAbstractAvatar.generate(
seed: DateTime.now().millisecondsSinceEpoch, // 使用当前时间作为种子以确保每次运行时生成不同的头像
size: 100, // 设置头像大小
colorScheme: ColorScheme.fromSwatch(
primarySwatch: Colors.blue,
),
)!,
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 点击按钮时生成新的随机头像
setState(() {
// 这里我们重新生成一个新的头像,通过改变种子值
});
},
child: Text('Generate New Avatar'),
),
],
),
),
);
}
}
在这个示例中,我们做了以下几件事:
- 依赖项添加:在
pubspec.yaml
文件中添加了random_abstract_avatar
依赖项。 - 主应用结构:创建了一个简单的Flutter应用,包括一个
MaterialApp
和一个Scaffold
。 - 头像生成:使用
RandomAbstractAvatar.generate
方法生成一个随机抽象头像,并将其显示为Image
组件。 - 按钮点击事件:虽然在这个示例中,点击按钮并没有直接重新生成头像(因为种子是基于当前时间的,每次运行时都会不同),但你可以通过更改种子值或其他参数来在点击按钮时生成新的头像。为了简化示例,这里省略了复杂的逻辑。
请注意,RandomAbstractAvatar.generate
方法返回的是一个Uint8List
(即字节数组),这个字节数组可以直接传递给Image.memory
构造函数来显示图像。
你可以根据需要调整头像的大小、颜色方案等参数,以生成不同风格的抽象头像。