Flutter头像生成插件avatar_maker的使用

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

Flutter头像生成插件avatar_maker的使用

简介

avatar_maker 是一个轻量级且高度可定制的SVG图形集,适用于Flutter应用。它提供了头像生成、自定义和其他实用工具小部件/函数。以下是关于如何使用该插件的详细说明和完整示例代码。

可用的小部件

avatar_maker 提供了以下三个易于使用的Flutter小部件:

名称 描述 截图
AvatarMakerAvatar 在你的Flutter应用中任何地方使用可自定义的头像小部件。支持Material深色主题。 1608830483994
AvatarMakerCustomizer 一个全面的UI用于自定义用户的头像。提供每个组件的预览,并可以通过 AvatarMakerThemeData 进行调整。 1608827561239
AvatarMakerRandomWidget 默认渲染一个随机按钮,或者可以作为 InkWell 包装器用于 child 小部件。每次显示属性类别时会随机更改头像属性。 AvatarMakerRandomWidget
AvatarMakerResetWidget 默认渲染一个重置按钮,或者可以作为 InkWell 包装器用于 child 小部件。将头像重置为上次保存的状态。 AvatarMakerResetWidget
AvatarMakerSaveWidget 默认渲染一个保存按钮,或者可以作为 InkWell 包装器用于 child 小部件。 1608827561239

自定义

avatar_maker 提供了多种自定义选项,包括主题、类别和属性以及本地化。

主题

你可以通过 AvatarMakerThemeData 来调整小部件的外观,例如自定义器的背景颜色、盒子装饰等。

类别和属性

所有类别(如服装或头发)和所有属性(如头发或面部毛发的颜色)都是完全可自定义的。你可以更改标题、隐藏类别或添加自定义属性。具体操作请参考相关文档。

本地化

通过定义语言环境,你可以更改显示的标题语言。目前支持的语言有:

  • 英语(默认)
  • 法语

实用函数

avatar_maker 提供了一些实用函数,用于与服务器或数据库高效地发送和接收数据:

函数原型 描述
Future<String> getJsonOptions() 提取已选选项并以JSON格式保存到外部。
void setJsonOptions(String jsonAvatarOptions) 从JSON格式导入给定选项到控制器。
Future<String> getAvatarSVG() 提取当前头像的SVG以进行外部保存。
Future<List<bool>> clearAvatarMaker() 清除头像生成器的所有数据。

使用步骤

  1. 依赖插件pubspec.yaml 文件中添加 avatar_maker 依赖:

    dependencies:
      avatar_maker: latest_version
    
  2. 导入包 在你的Dart文件中添加以下导入语句:

    import "package:avatar_maker/avatar_maker.dart";
    
  3. 显示头像 使用 AvatarMakerAvatar 小部件在需要的地方显示头像:

    AvatarMakerAvatar();
    
  4. 自定义头像 添加 AvatarMakerCustomizer 小部件以允许用户个性化他们的头像:

    AvatarMakerCustomizer();
    

完整示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 avatar_maker 插件:

import "dart:math";
import "package:flutter/material.dart";
import "package:avatar_maker/avatar_maker.dart";

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Avatar Maker Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData.light(),
      // darkTheme: ThemeData.dark(),
      home: MyHomePage(title: 'Avatar Maker'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, this.title}) : super(key: key);
  final String? title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title!),
        centerTitle: true,
      ),
      body: ListView(
        physics: BouncingScrollPhysics(),
        children: <Widget>[
          SizedBox(height: 25),
          Padding(
            padding: const EdgeInsets.all(16.0),
            child: Text(
              "Use your Avatar Maker anywhere\nwith the below widget",
              style: TextStyle(fontWeight: FontWeight.w600, fontSize: 20),
              textAlign: TextAlign.center,
            ),
          ),
          SizedBox(height: 25),
          AvatarMakerAvatar(
            backgroundColor: Colors.grey[200],
            radius: 100,
          ),
          SizedBox(height: 25),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(
              "and create your own page to customize them using our widgets",
              style: TextStyle(fontWeight: FontWeight.w600, fontSize: 20),
              textAlign: TextAlign.center,
            ),
          ),
          SizedBox(height: 50),
          Row(
            children: [
              Spacer(flex: 2),
              Expanded(
                flex: 3,
                child: Container(
                  height: 35,
                  child: ElevatedButton.icon(
                    icon: Icon(Icons.edit),
                    label: Text("Customize"),
                    onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (context) => NewPage())),
                  ),
                ),
              ),
              Spacer(flex: 2),
            ],
          ),
          SizedBox(height: 100),
        ],
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    var _width = MediaQuery.of(context).size.width;
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Padding(
                padding: const EdgeInsets.symmetric(vertical: 30),
                child: AvatarMakerAvatar(
                  radius: 100,
                  backgroundColor: Colors.grey[200],
                ),
              ),
              SizedBox(width: min(600, _width * 0.85), child: Row(
                children: [
                  Text(
                    "Customize:",
                    style: Theme.of(context).textTheme.titleLarge,
                  ),
                  Spacer(),
                  AvatarMakerSaveWidget(),
                  AvatarMakerRandomWidget(),
                  AvatarMakerResetWidget(),
                ],
              )),
              Padding(
                padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 30),
                child: AvatarMakerCustomizer(
                  scaffoldWidth: min(600, _width * 0.85),
                  autosave: false,
                  theme: AvatarMakerThemeData(
                      boxDecoration: BoxDecoration(boxShadow: [BoxShadow()])),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter头像生成插件avatar_maker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter头像生成插件avatar_maker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用avatar_maker插件来生成头像的示例代码。avatar_maker插件允许你通过代码来动态生成圆形头像,并且支持自定义颜色、形状和文本等。

1. 添加依赖

首先,你需要在pubspec.yaml文件中添加avatar_maker的依赖:

dependencies:
  flutter:
    sdk: flutter
  avatar_maker: ^latest_version  # 请替换为实际的最新版本号

然后运行flutter pub get来安装依赖。

2. 导入包

在你的Dart文件中导入avatar_maker包:

import 'package:avatar_maker/avatar_maker.dart';

3. 使用AvatarMaker

以下是一个完整的示例,展示如何在Flutter应用中使用AvatarMaker来生成头像:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Avatar Maker Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Avatar Maker Example'),
        ),
        body: Center(
          child: AvatarMakerWidget(),
        ),
      ),
    );
  }
}

class AvatarMakerWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        AvatarMaker(
          backgroundColor: Colors.blue,
          foregroundColor: Colors.white,
          initials: 'AB',
          circleBorderThickness: 4.0,
          circleBorderColor: Colors.grey,
          circleShape: 0.0,
          size: 100.0,
        ),
        SizedBox(height: 20.0),
        AvatarMaker(
          backgroundColor: Colors.green,
          foregroundColor: Colors.yellow,
          initials: 'XY',
          circleBorderThickness: 2.0,
          circleBorderColor: Colors.white,
          circleShape: 0.5,  // 半圆形
          size: 150.0,
        ),
      ],
    );
  }
}

参数解释

  • backgroundColor: 头像的背景颜色。
  • foregroundColor: 头像上文字(初始字母)的颜色。
  • initials: 要显示的初始字母。
  • circleBorderThickness: 头像边框的厚度。
  • circleBorderColor: 头像边框的颜色。
  • circleShape: 头像的形状参数。0.0表示完全圆形,1.0表示完全方形,0.5表示半圆形。
  • size: 头像的大小。

运行项目

确保你已经连接了开发设备或启动了模拟器,然后运行flutter run来启动你的Flutter应用。你应该能看到两个不同风格和形状的头像生成在屏幕上。

这个示例展示了如何使用avatar_maker插件的基本功能,你可以根据需要进一步自定义和扩展。

回到顶部