Flutter点赞按钮插件like_button的使用

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

Flutter点赞按钮插件like_button的使用

简介

like_button 是一个Flutter库,它允许你创建具有类似Twitter点赞动画效果的按钮。当用户点击按钮时,不仅会有动画效果,还可以增加点赞计数。

LikeButton 动画示例

Web Demo for LikeButton | GitHub 仓库

使用方法

添加依赖

在你的 pubspec.yaml 文件中添加 like_button 依赖:

dependencies:
  like_button: ^2.0.1+1 # 请确保版本号是最新的

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

基本用法

最简单的使用方式是直接调用 LikeButton(),它会使用默认的心形图标和动画效果:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Like Button Example')),
        body: Center(
          child: LikeButton(),
        ),
      ),
    );
  }
}

自定义样式

你可以通过设置不同的参数来自定义点赞按钮的外观和行为。以下是一个更复杂的例子:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  final int _likeCount = 665;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Custom Like Button Example')),
        body: Center(
          child: LikeButton(
            size: 40, // 设置按钮大小
            circleColor: CircleColor(start: Color(0xff00ddff), end: Color(0xff0099cc)), // 圆圈颜色渐变
            bubblesColor: BubblesColor(
              dotPrimaryColor: Color(0xff33b5e5),
              dotSecondaryColor: Color(0xff0099cc),
            ), // 气泡颜色
            likeBuilder: (bool isLiked) {
              return Icon(
                Icons.home, // 使用自定义图标
                color: isLiked ? Colors.deepPurpleAccent : Colors.grey,
                size: 40,
              );
            },
            likeCount: _likeCount,
            countBuilder: (int? count, bool isLiked, String text) {
              var color = isLiked ? Colors.deepPurpleAccent : Colors.grey;
              Widget result;
              if (count == 0) {
                result = Text(
                  "love",
                  style: TextStyle(color: color),
                );
              } else {
                result = Text(
                  text,
                  style: TextStyle(color: color),
                );
              }
              return result;
            },
            onTap: onLikeButtonTapped, // 处理点击事件
          ),
        ),
      ),
    );
  }

  Future<bool> onLikeButtonTapped(bool isLiked) async {
    /// 在这里发送网络请求
    // final bool success= await sendRequest();

    /// 如果失败,可以不执行任何操作
    // return success ? !isLiked : isLiked;

    return !isLiked; // 反转点赞状态
  }
}

参数说明

以下是 LikeButton 的一些常用参数及其默认值:

参数 描述 默认值
size 点赞组件的大小 30.0
animationDuration 改变点赞状态时的动画持续时间 const Duration(milliseconds: 1000)
bubblesSize 气泡的总大小 size * 2.0
bubblesColor 气泡的颜色 const BubblesColor(dotPrimaryColor: const Color(0xFFFFC107),…)
circleSize 圆圈的最终大小 size * 0.8
circleColor 圆圈的颜色 const CircleColor(start: const Color(0xFFFF5722), …)
onTap 点赞按钮点击回调,可以在其中处理网络请求等 -
isLiked 是否已点赞(如果为null,则总是显示点赞动画并增加点赞计数) false
likeCount 点赞数量(如果为null则不显示) null
mainAxisAlignment 主轴对齐方式 MainAxisAlignment.center
likeBuilder 创建点赞组件的构造函数 null
countBuilder 创建点赞计数字体的构造函数 null
likeCountAnimationDuration 改变点赞计数时的动画持续时间 const Duration(milliseconds: 500)
likeCountAnimationType 改变点赞计数时的动画类型(none, part, all) LikeCountAnimationType.part
likeCountPadding 点赞计数字体的内边距 const EdgeInsets.only(left: 3.0)
countPostion 点赞计数相对于按钮的位置(top, right, bottom, left) CountPostion.right
countDecoration 点赞计数字体的装饰 null
postFrameCallback 第一帧回调,带有 LikeButtonState null

发送请求的时机

通常情况下,你会希望在用户点击点赞按钮时发送网络请求来更新服务器上的点赞状态。这可以通过 onTap 回调来实现:

Future<bool> onLikeButtonTapped(bool isLiked) async {
  /// 发送网络请求
  final bool success = await sendRequest();

  /// 如果请求失败,保持原有状态;否则切换状态
  return success ? !isLiked : isLiked;
}

请注意,你需要自己实现 sendRequest 函数来与后端进行交互。

以上就是关于 like_button 插件的基本介绍和使用方法。如果你有任何问题或需要更多帮助,请随时提问!


更多关于Flutter点赞按钮插件like_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter点赞按钮插件like_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用like_button插件来创建一个点赞按钮的示例代码。这个插件提供了简洁的API来创建一个功能齐全的点赞按钮。

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

dependencies:
  flutter:
    sdk: flutter
  like_button: ^2.0.3  # 请检查最新版本号

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

接下来,在你的Flutter项目的Dart文件中(例如main.dart),你可以使用以下代码来创建一个点赞按钮:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Like Button Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: LikeButtonDemo(),
    );
  }
}

class LikeButtonDemo extends StatefulWidget {
  @override
  _LikeButtonDemoState createState() => _LikeButtonDemoState();
}

class _LikeButtonDemoState extends State<LikeButtonDemo> {
  bool isLiked = false;
  int likeCount = 0;

  void _onLike() {
    setState(() {
      isLiked = !isLiked;
      likeCount += isLiked ? 1 : -1;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Like Button Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            LikeButton(
              isLiked: isLiked,
              likeCount: likeCount,
              onTap: _onLike,
              likeBuilder: (bool isLiked) {
                return Icon(
                  Icons.thumb_up,
                  color: isLiked ? Colors.red : Colors.grey,
                );
              },
              countBuilder: (int count, bool isLiked, bool hasLiked) {
                String text = count == 0 ? "" : count.toString();
                if (hasLiked) {
                  text = "You " + text;
                }
                return Text(
                  text,
                  style: TextStyle(fontSize: 20),
                );
              },
            ),
            SizedBox(height: 20),
            Text(
              'You have $likeCount likes',
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个点赞按钮。按钮的状态(是否已点赞)和点赞数通过_LikeButtonDemoState的状态管理来维护。

  • LikeButton组件的isLiked属性表示当前是否已点赞。
  • likeCount属性表示当前的点赞数。
  • onTap属性是一个回调函数,当按钮被点击时调用,用于更新点赞状态和计数。
  • likeBuilder属性用于构建点赞图标,根据是否已点赞来改变图标的颜色。
  • countBuilder属性用于构建显示点赞数的文本,还可以根据是否已点赞和是否曾经点赞来定制文本内容。

这个示例提供了一个基本的框架,你可以根据需要进一步自定义和扩展。

回到顶部