Flutter评分插件custom_rating_bar的使用
Flutter评分插件custom_rating_bar的使用
custom_rating_bar
是一个Flutter插件,用于创建自定义评分条。它支持自定义图标、半星显示、方向和对齐等特性。
快速开始
使用方法
首先,在你的pubspec.yaml
文件中添加依赖:
dependencies:
custom_rating_bar: ^latest_version # 替换为最新版本号
然后运行 flutter pub get
来安装这个包。
接下来在你的Dart代码中导入此库:
import 'package:custom_rating_bar/custom_rating_bar.dart';
基础用法
这是一个简单的评分条的例子:
RatingBar(
filledIcon: Icons.star, // 已选中的星星图标
emptyIcon: Icons.star_border, // 未选中的星星图标
onRatingChanged: (value) => debugPrint('$value'), // 当用户改变评分时触发
initialRating: 3, // 初始评分值
maxRating: 5, // 最大评分值
)
如果你想要一个只读的评分条(例如用来展示),可以这样使用:
RatingBar.readOnly(
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
initialRating: 4,
maxRating: 5,
)
示例代码
以下是一个完整的示例应用,展示了如何配置不同的选项来创建多样化的评分条:
import 'package:custom_rating_bar/custom_rating_bar.dart';
import 'package:flutter/material.dart';
void main() {
runApp(_MyApp());
}
class _MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom Rating Bar Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const ExamplePage(),
);
}
}
class ExamplePage extends StatelessWidget {
const ExamplePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: ListView(
padding: const EdgeInsets.all(16).copyWith(top: MediaQuery.of(context).padding.top + 16),
children: [
_buildDivider('Half icons'),
RatingBar(
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
onRatingChanged: (value) => debugPrint('$value'),
initialRating: 3,
alignment: Alignment.center,
),
const SizedBox(height: 16),
_buildDivider('Custom colors'),
const RatingBar.readOnly(
isHalfAllowed: true,
alignment: Alignment.center,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
emptyColor: Colors.redAccent,
filledColor: Colors.greenAccent,
halfFilledColor: Colors.amberAccent,
halfFilledIcon: Icons.star_half,
initialRating: 3.5,
maxRating: 7,
),
const SizedBox(height: 16),
_buildDivider('Custom icons'),
const RatingBar.readOnly(
isHalfAllowed: true,
alignment: Alignment.center,
filledIcon: Icons.wb_sunny,
halfFilledIcon: Icons.wb_cloudy,
emptyIcon: Icons.ac_unit,
emptyColor: Colors.blue,
halfFilledColor: Colors.grey,
initialRating: 4,
),
const SizedBox(height: 16),
_buildDivider('Vertical'),
const RatingBar.readOnly(
direction: Axis.vertical,
isHalfAllowed: true,
alignment: Alignment.center,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
initialRating: 2,
maxRating: 3,
halfFilledIcon: Icons.star_half,
),
const SizedBox(height: 16),
_buildDivider('Aligned left'),
const RatingBar.readOnly(
isHalfAllowed: true,
filledIcon: Icons.face,
filledColor: Colors.greenAccent,
halfFilledColor: Colors.amberAccent,
emptyIcon: Icons.face,
initialRating: 3.5,
halfFilledIcon: Icons.face,
),
const SizedBox(height: 16),
_buildDivider('Aligned right'),
const RatingBar.readOnly(
isHalfAllowed: true,
alignment: Alignment.centerRight,
filledIcon: Icons.star,
emptyIcon: Icons.star_border,
filledColor: Colors.greenAccent,
halfFilledColor: Colors.greenAccent,
initialRating: 3.5,
halfFilledIcon: Icons.star_half,
),
],
),
);
}
Widget _buildDivider(String text) => Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Flexible(
child: Divider(
color: Colors.grey[400],
height: 48,
thickness: 1,
),
),
const SizedBox(width: 8),
Text(
text,
style: TextStyle(
color: Colors.grey[500],
fontSize: 20,
fontWeight: FontWeight.w300,
),
),
const SizedBox(width: 8),
Flexible(
child: Divider(
color: Colors.grey[350],
height: 32,
thickness: 1,
),
),
],
);
}
以上代码展示了如何使用custom_rating_bar
创建不同风格的评分条,包括半星、自定义颜色、自定义图标、垂直排列以及不同的对齐方式。你可以根据自己的需求调整这些属性以适应应用程序的设计。
更多关于Flutter评分插件custom_rating_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter评分插件custom_rating_bar的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用custom_rating_bar
插件的代码示例。custom_rating_bar
是一个流行的Flutter插件,用于在应用中显示和处理评分条。
首先,你需要在pubspec.yaml
文件中添加该插件的依赖项:
dependencies:
flutter:
sdk: flutter
custom_rating_bar: ^0.4.0 # 请检查最新版本号并替换
然后,运行flutter pub get
来安装依赖项。
接下来,你可以在你的Flutter应用中使用CustomRatingBar
。以下是一个完整的示例,包括如何显示评分条和处理评分更改事件:
import 'package:flutter/material.dart';
import 'package:custom_rating_bar/custom_rating_bar.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Rating Bar Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: RatingBarScreen(),
);
}
}
class RatingBarScreen extends StatefulWidget {
@override
_RatingBarScreenState createState() => _RatingBarScreenState();
}
class _RatingBarScreenState extends State<RatingBarScreen> {
double rating = 0.0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Rating Bar Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Your Rating:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 16),
CustomRatingBar(
rating: rating,
size: 30,
itemCount: 5,
itemBuilder: (context, index) => Icon(
Icons.star,
color: Colors.amber,
),
onRatingChange: (rating) {
setState(() {
this.rating = rating;
});
},
),
SizedBox(height: 16),
Text(
'Selected Rating: $rating',
style: TextStyle(fontSize: 20),
),
],
),
),
);
}
}
代码说明
- 依赖项:在
pubspec.yaml
文件中添加custom_rating_bar
依赖项。 - 应用入口:
MyApp
是应用的入口,它使用MaterialApp
并设置home
为RatingBarScreen
。 - 评分条屏幕:
RatingBarScreen
是一个有状态的Widget,它包含一个评分条和显示当前评分的文本。 - 评分条:
CustomRatingBar
用于显示评分条。它的主要属性包括:rating
:当前的评分。size
:每个评分项的大小。itemCount
:评分项的数量。itemBuilder
:用于构建每个评分项的Widget。onRatingChange
:当评分改变时调用的回调函数。
这个示例展示了如何使用custom_rating_bar
插件来显示一个评分条,并处理评分变化事件。你可以根据需要进一步自定义评分条的外观和行为。