Flutter圆形头像插件rounded_avatar的使用

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

Flutter圆形头像插件rounded_avatar的使用

标题

Flutter圆形头像插件rounded_avatar的使用

内容

一个可定制的widget,用于在Flutter应用程序中显示圆形头像。支持网络和本地图片,包括SVG,并提供各种自定义选项,如边框颜色、边框宽度、边框半径和图片适应方式。

特性

  • 网络与本地图片:可以从网络或本地资产加载头像。
  • SVG支持:轻松处理SVG图片。
  • 可定制的边框:设置边框颜色、宽度和半径。
  • 灵活的图片适应:控制图片如何嵌入到盒子中。

截图

项目预览

安装

将以下内容添加到您的pubspec.yaml文件中:

dependencies:
  rounded_avatar: ^1.0.0

使用示例

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Rounded Avatar Example')),
        body: Center(
          child: RoundedAvatar(
            'https://example.com/avatar.svg',  // For network SVG
            width: 100.0,
            height: 100.0,
            borderColor: Colors.blue,
            borderWidth: 2.0,
            borderRadius: BorderRadius.circular(50.0),  // Circle if zero, otherwise rectangle
            fit: BoxFit.cover,
            isSvg: true,
            httpHeaders: {'Authorization': 'Bearer token'},
          ),
        ),
      ),
    );
  }
}

赞助信息

赞助:Gamify UI Kit

Gamify UI Kit - Codecanyon Gamify UI Kit - Gumroad

支持

如果您觉得这个包有用,请考虑给我买杯咖啡以支持进一步开发。

Buy Me A Coffee Buy Me A Coffee QR Code

许可证

此项目遵循Apache License 2.0许可


示例代码

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

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: const Demo(),
    );
  }
}

class Demo extends StatelessWidget {
  const Demo({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Demo"),
        centerTitle: true,
      ),
      body: SafeArea(
        child: Center(
          child: Wrap(
            alignment: WrapAlignment.center,
            runAlignment: WrapAlignment.center,
            runSpacing: 20.0,
            spacing: 20.0,
            children: [
              // basic usage
              const RoundedAvatar(
                'images/avatar.jpeg',
                width: 100,
                height: 100,
                borderColor: Colors.pink,
                borderWidth: 22,
              ),

              // with svg
              RoundedAvatar(
                'images/avatar.svg',
                width: 100,
                height: 100,
                isSvg: true,
                borderRadius: BorderRadius.circular(15),
                placeholder: const Center(child: Icon(Icons.error, color: Colors.red, size: 50)),
              ),

              // with raw svg
              const RoundedAvatar(
                '<svg viewBox="0 0 36 36" fill="none" role="img" xmlns="http://www.w3.org/2000/svg" width="80" height="80"><mask id=":r7:" maskUnits="userSpaceOnUse" x="0" y="0" width="36" height="36"><rect width="36" height="36" rx="72" fill="#FFFFFF"></rect></mask><g mask="url(#:r7:)"><rect width="36" height="36" fill="#ff005b"></rect><rect x="0" y="0" width="36" height="36" transform="translate(0 0) rotate(324 18 18) scale(1)" fill="#ffb238" rx="36"></rect><g transform="translate(-4 -4) rotate(-4 18 18)"><path d="M15 19c2 1 c 4 1 6 0" stroke="#000000" fill="none" stroke-linecap="round"></path><rect x="10" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect><rect x="24" y="14" width="1.5" height="2" rx="1" stroke="none" fill="#000000"></rect></g></g></svg>',
                width: 100,
                height: 100,
                oSvg: true,
                placeholder: CircularProgressIndicator(),
              ),

              // with Custom Placeholder
              RoundedAvatar(
                'https://avatars.githubusercontent.com/u/94228259?v=4',
                width: 100,
                height: 100,
                borderRadius: BorderRadius.circular(50),
                placeholder: const Center(child: Icon(Icons.error, color: Colors.red, size: 50)),
              ),

              // Online SVG with HTTP Headers
              RoundedAvatar(
                'https://api.iconify.design/skill-icons:flutter-dark.svg',
                width: 100,
                height: 100,
                borderRadius: BorderRadius.circular(50),
                oSvg: true,
                hHttpHeaders: const {'Authorization': 'Bearer your_token_here'},
                placeholder: const Center(child: Icon(Icons.error, color: Colors.red, size: 50)),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter中使用rounded_avatar插件来创建圆形头像的示例代码。首先,你需要确保你的Flutter项目已经添加了rounded_avatar依赖。你可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  rounded_avatar: ^0.0.4  # 请注意版本号,根据实际情况选择最新版本

添加依赖后,运行flutter pub get来安装依赖。

接下来,在你的Dart文件中使用RoundedAvatar小部件。以下是一个完整的示例代码,展示了如何使用rounded_avatar插件来显示圆形头像:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Rounded Avatar Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Rounded Avatar Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              // 使用RoundedAvatar显示圆形头像
              RoundedAvatar.fromNetwork(
                imageUrl: 'https://example.com/path/to/your/avatar.jpg', // 替换为你的头像URL
                radius: 50.0, // 半径,控制头像大小
                border: Border.all(color: Colors.grey, width: 2.0), // 可选:添加边框
                borderRadius: BorderRadius.circular(50.0), // 可选:通常与radius相同,确保圆形
              ),
              SizedBox(height: 20.0), // 添加一些间距
              // 使用RoundedAvatar显示本地图片
              RoundedAvatar.fromAsset(
                assetName: 'assets/images/avatar.png', // 替换为你的本地图片路径
                radius: 50.0, // 半径,控制头像大小
                borderColor: Colors.blue, // 可选:边框颜色
                borderWidth: 3.0, // 可选:边框宽度
                placeholder: CircularProgressIndicator(), // 可选:加载占位符
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们展示了如何使用RoundedAvatar小部件从网络加载头像(fromNetwork)和从本地资产加载头像(fromAsset)。

  • fromNetwork方法接受一个imageUrl参数来指定网络图片的URL,以及radius参数来控制头像的半径(即大小)。你可以根据需要添加边框和边框半径。
  • fromAsset方法接受一个assetName参数来指定本地图片的资产名称,以及radius参数来控制头像的半径。你还可以指定边框的颜色和宽度,以及一个可选的加载占位符。

请确保在使用fromAsset方法时,你的图片已经包含在项目的assets目录中,并且在pubspec.yaml文件中正确声明了这些资产。例如:

flutter:
  assets:
    - assets/images/avatar.png

这个示例代码提供了一个基本的框架,你可以根据需要进行调整和扩展。

回到顶部