Flutter评分动画插件animated_rating_bar的使用

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

Flutter评分动画插件animated_rating_bar的使用

简介

animated_rating_bar 是一个可定制的评分条插件,支持动画效果,适用于 Flutter 应用程序。

开始使用

添加依赖

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

dependencies:
  ...
  animated_rating_bar: ^最新版本

导入库

在你的 Dart 文件中导入以下库:

import 'package:animated_rating_bar/animated_rating_bar.dart';

示例代码

以下是一个简单的示例,展示了如何在 Flutter 应用程序中使用 AnimatedRatingBar

完整示例

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

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Animated Rating Bar',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      darkTheme: ThemeData(useMaterial3: true, brightness: Brightness.dark),
      home: const RatingScreen(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: const Text("Animated Rating Bar"),
      ),
      body: Center(
        child: AnimatedRatingBar(
          activeFillColor: Theme.of(context).colorScheme.inversePrimary,
          strokeColor: Colors.green,
          initialRating: 0,
          height: 60,
          width: MediaQuery.of(context).size.width,
          animationColor: Colors.red,
          onRatingUpdate: (rating) {
            debugPrint(rating.toString());
          },
        ),
      ),
    );
  }
}

解释

  • activeFillColor: 选中的星星的颜色。
  • strokeColor: 星星的边框颜色。
  • initialRating: 初始评分值。
  • height: 评分条的高度。
  • width: 评分条的宽度。
  • animationColor: 动画效果的颜色。
  • onRatingUpdate: 当评分更新时的回调函数,参数为当前的评分值。

特别感谢

许可证

本项目采用 MIT License 发布,由 @codersangam 维护。

贡献

欢迎贡献!请遵循以下步骤:

  1. Fork 项目 (https://github.com/codersangam/animated_rating_bar/fork)
  2. 创建功能分支(git checkout -b feature/fooBar
  3. 提交更改(git commit -am 'Add some fooBar'
  4. 推送到分支(git push origin feature/fooBar
  5. 创建新的 Pull Request

希望这个插件能帮助你在 Flutter 应用中实现美观且功能强大的评分条。如果你有任何问题或建议,请随时提交 Issue 或 Pull Request。


更多关于Flutter评分动画插件animated_rating_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter评分动画插件animated_rating_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用animated_rating_bar插件的一个代码示例。这个插件允许你创建带有动画效果的评分条。

首先,确保你已经在pubspec.yaml文件中添加了animated_rating_bar依赖:

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

然后,运行flutter pub get来获取依赖。

接下来是一个完整的示例代码,展示了如何使用AnimatedRatingBar

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Animated Rating Bar Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: RatingBarScreen(),
    );
  }
}

class RatingBarScreen extends StatefulWidget {
  @override
  _RatingBarScreenState createState() => _RatingBarScreenState();
}

class _RatingBarScreenState extends State<RatingBarScreen> {
  double _rating = 3.0;

  void _updateRating(double rating) {
    setState(() {
      _rating = rating;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Rating Bar Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedRatingBar.builder(
              initialRating: _rating,
              minRating: 1,
              direction: Axis.horizontal,
              allowHalfRating: true,
              itemCount: 5,
              itemBuilder: (context, _) => Icon(
                Icons.star,
                color: Colors.amber,
              ),
              onRatingUpdate: (rating) => _updateRating(rating),
            ),
            SizedBox(height: 20),
            Text(
              'Current Rating: $_rating',
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 依赖导入

    import 'package:animated_rating_bar/animated_rating_bar.dart';
    
  2. 主应用

    void main() {
      runApp(MyApp());
    }
    
  3. 应用主题和主页

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Animated Rating Bar Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: RatingBarScreen(),
        );
      }
    }
    
  4. 评分条屏幕

    • 创建一个状态类_RatingBarScreenState来管理评分状态。
    • _updateRating方法用于更新当前评分。
    • 使用AnimatedRatingBar.builder构建评分条,并设置初始评分、最小评分、方向、是否允许半星评分、图标数量以及图标构建器。
    • onRatingUpdate回调用于处理评分更新。
class RatingBarScreen extends StatefulWidget {
  @override
  _RatingBarScreenState createState() => _RatingBarScreenState();
}

class _RatingBarScreenState extends State<RatingBarScreen> {
  double _rating = 3.0;

  void _updateRating(double rating) {
    setState(() {
      _rating = rating;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Animated Rating Bar Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedRatingBar.builder(
              initialRating: _rating,
              minRating: 1,
              direction: Axis.horizontal,
              allowHalfRating: true,
              itemCount: 5,
              itemBuilder: (context, _) => Icon(
                Icons.star,
                color: Colors.amber,
              ),
              onRatingUpdate: (rating) => _updateRating(rating),
            ),
            SizedBox(height: 20),
            Text(
              'Current Rating: $_rating',
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

这段代码展示了如何使用animated_rating_bar插件来创建一个具有动画效果的评分条,并实时更新评分值。你可以根据需要进一步自定义评分条的样式和行为。

回到顶部