Flutter表情评分插件emoji_rating_bar的使用

Flutter表情评分插件emoji_rating_bar的使用

Animated feedback and mood rating bar

emoji_rating_bar 是一个平滑动画评分条插件,适用于客户和服务反馈。它配备了可定制的表情和情绪条。您可以创建独特的评分条,使用自定义表情、文本、评分、大小和动画。用户可以轻松更改未选中项的颜色,从而获得更好的体验。

Usage

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

dependencies:
  emoji_rating_bar: ^<latest-version>

Feedback Rating Bar

service_feedback

EmojiRatingBar()

Mood Rating Bar

moodbar

EmojiRatingBar(
  ratingBarType: RatingBarType.mood
)

Customise Rating Bar

您可以通过向小部件提供额外属性来自定义评分条。例如:

EmojiRatingBar(
  rating: 2,
  onRateChange: (rating) {
    print(rating);
  },
  isReadOnly: false,
  spacing: 15,
  size: 40,
  selectedSize: 60,
  isShowTitle: true,
  isShowDivider: true,
  titleStyle: TextStyle(
    color: Colors.grey,
    fontSize: 8,
  ),
  selectedTitleStyle: TextStyle(
    color: Colors.black,
    fontSize: 12,
  ),
  animationDuration: Duration(milliseconds: 500),
  animationCurve: Curves.easeInOut,
  ratingBarType: RatingBarType.feedback,
  applyColorFilter: true
)

Create Custom list

要创建包含自定义图像的自定义表情列表,可以使用以下格式:

[
  EmojiData(icStrong, "Strong", isPackageImg: true),  // 如果使用包资产图像,必须将 isPackageImg 设置为 true
  EmojiData(
    "assets/ic_delighted.png",   // 项目资产图像
    "Delighted"
  )
]

示例代码

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

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

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.orange,
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: SingleChildScrollView(
            child: Column(
              children: [
                const Text("How was the our service?"),
                const SizedBox(height: 30),
                const EmojiRatingBar(
                  rating: 3,
                ),
                const SizedBox(height: 80),
                const Text("How are you feeling?"),
                const SizedBox(height: 30),
                const EmojiRatingBar(
                  ratingBarType: RatingBarType.mood,
                  rating: 3,
                ),
                const SizedBox(height: 80),
                const Text("Customise your rating bar"),
                const SizedBox(height: 30),
                EmojiRatingBar(
                  rating: 2,
                  isShowTitle: false,
                  applyColorFilter: false,
                  onRateChange: (rating) {
                    debugPrint("Current rating $rating");
                  },
                  list: [
                    EmojiData(icStrong, "Strong", isPackageImg: true),
                    EmojiData(
                      "assets/ic_delighted.png",
                      "Delighted",
                    )
                  ],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,其中包括三个不同的 EmojiRatingBar 小部件:

  1. 服务反馈评分条
  2. 情绪反馈评分条
  3. 自定义评分条

每个评分条都可以根据需要进行自定义,以满足您的应用需求。


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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用emoji_rating_bar插件的一个详细代码示例。emoji_rating_bar是一个流行的Flutter插件,用于实现带有表情符号的评分条。

第一步:添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  emoji_rating_bar: ^latest_version  # 请将latest_version替换为当前最新版本号

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

第二步:导入包

在你的Dart文件中(例如main.dart),导入emoji_rating_bar包:

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

第三步:使用EmojiRatingBar

以下是一个简单的示例,展示如何在你的Flutter应用中使用EmojiRatingBar

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

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

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double _rating = 3.0;

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Emoji Rating Bar Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            EmojiRatingBar(
              rating: _rating,
              onRatingChange: _onRatingChanged,
              emojiSize: 24,
              numRatings: 5,
              barBackgroundColor: Colors.grey[200]!,
              barHeight: 40,
              barPadding: EdgeInsets.symmetric(horizontal: 8),
              itemSpacing: 8,
              itemBuilder: (context, index) {
                return Text(
                  '😊',
                  style: TextStyle(fontSize: 24),
                );
              },
            ),
            SizedBox(height: 20),
            Text(
              'Current Rating: $_rating',
              style: TextStyle(fontSize: 20),
            ),
          ],
        ),
      ),
    );
  }
}

代码解释

  1. 导入包

    import 'package:emoji_rating_bar/emoji_rating_bar.dart';
    import 'package:flutter/material.dart';
    
  2. 定义主函数

    void main() {
      runApp(MyApp());
    }
    
  3. 创建MyApp和MyHomePage类

    • MyApp是一个无状态的Widget,它设置了应用的主题和主页。
    • MyHomePage是一个有状态的Widget,它管理当前的评分。
  4. 评分更改回调

    void _onRatingChanged(double rating) {
      setState(() {
        _rating = rating;
      });
    }
    
  5. EmojiRatingBar组件

    • rating:当前的评分。
    • onRatingChange:评分更改时的回调。
    • emojiSize:表情符号的大小。
    • numRatings:评分的总数。
    • barBackgroundColor:评分条的背景颜色。
    • barHeight:评分条的高度。
    • barPadding:评分条的内边距。
    • itemSpacing:表情符号之间的间距。
    • itemBuilder:用于自定义每个表情符号的Widget。
  6. 显示当前评分

    Text(
      'Current Rating: $_rating',
      style: TextStyle(fontSize: 20),
    ),
    

运行上述代码后,你将看到一个带有表情符号的评分条,以及当前评分的显示。你可以通过点击表情符号来更改评分,并且评分将实时更新。

回到顶部