Browse Source

员工的评论列表

liukai 7 months ago
parent
commit
c0ec76755b

+ 8 - 1
packages/cpt_job/lib/modules/applied_staff_detail/applied_staff_detail_controller.dart

@@ -8,6 +8,7 @@ import 'package:plugin_platform/http/http_result.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
 
+import '../applied_staff_reviews/applied_staff_reviews_page.dart';
 import 'applied_staff_detail_state.dart';
 
 class AppliedStaffDetailController extends GetxController with DioCancelableMixin {
@@ -57,7 +58,7 @@ class AppliedStaffDetailController extends GetxController with DioCancelableMixi
   Future fetchStaffDetail() async {
     if (_needShowPlaceholder) {
       changeLoadingState(LoadState.State_Loading);
-    }else if(_isSearch){
+    } else if (_isSearch) {
       LoadingEngine.show();
     }
 
@@ -148,4 +149,10 @@ class AppliedStaffDetailController extends GetxController with DioCancelableMixi
   void onClose() {
     super.onClose();
   }
+
+  // 去员工的评论列表页面
+  void gotoRemarkHistoryPage() {
+    AppliedStaffReviewsPage.startInstance(state.memberId,state.detail?.name,state.detail?.remRate,state.detail?.remNum.toString());
+  }
+
 }

+ 3 - 1
packages/cpt_job/lib/modules/applied_staff_detail/applied_staff_detail_page.dart

@@ -83,7 +83,9 @@ class _AppliedStaffDetailState extends BaseState<AppliedStaffDetailPage, Applied
                 successSliverWidget: [
                   //顶部用户信息
                   SliverToBoxAdapter(
-                    child: StaffDetailWidget(detail: state.detail),
+                    child: StaffDetailWidget(detail: state.detail,onRemarkAction: (){
+                      controller.gotoRemarkHistoryPage();
+                    }),
                   ),
 
                   //中间搜索布局

+ 3 - 0
packages/cpt_job/lib/modules/applied_staff_detail/staff_detail_widget.dart

@@ -18,9 +18,11 @@ import 'package:widgets/my_text_view.dart';
 class StaffDetailWidget extends StatelessWidget {
 
   final StaffDetailEntity? detail;
+  final void Function() onRemarkAction;
 
   StaffDetailWidget({
     required this.detail,
+    required this.onRemarkAction,
   });
 
   @override
@@ -137,6 +139,7 @@ class StaffDetailWidget extends StatelessWidget {
                 marginLeft: 5,
                 textColor: ColorConstants.textGreen0AC074,
                 fontSize: 14,
+                onClick: onRemarkAction,
                 isFontMedium: true,
               ).expanded(),
             ],

+ 102 - 1
packages/cpt_job/lib/modules/applied_staff_reviews/applied_staff_reviews_controller.dart

@@ -1,7 +1,108 @@
+import 'package:domain/entity/response/staff_remark_history_entity.dart';
+import 'package:domain/repository/job_repository.dart';
 import 'package:get/get.dart';
+import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
 
 import 'applied_staff_reviews_state.dart';
 
-class AppliedStaffReviewsController extends GetxController {
+class AppliedStaffReviewsController extends GetxController with DioCancelableMixin {
+  final JobRepository _jobRepository = Get.find();
   final AppliedStaffReviewsState state = AppliedStaffReviewsState();
+
+  var _curPage = 1;
+  var _needShowPlaceholder = true;
+
+  //页面PlaceHolder的展示
+  LoadState loadingState = LoadState.State_Success;
+  String? errorMessage;
+
+  //刷新页面状态
+  void changeLoadingState(LoadState state) {
+    loadingState = state;
+    update();
+  }
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true,
+    controlFinishLoad: true,
+  );
+
+  // Refresh 刷新事件
+  Future onRefresh() async {
+    _curPage = 1;
+    fetchStaffReviews();
+  }
+
+  // Refresh 加载事件
+  Future loadMore() async {
+    _curPage++;
+    fetchStaffReviews();
+  }
+
+  // 重试请求
+  Future retryRequest() async {
+    _curPage = 1;
+    _needShowPlaceholder = true;
+    fetchStaffReviews();
+  }
+
+  /// 获取列表数据
+  Future fetchStaffReviews() async {
+    if (_needShowPlaceholder) {
+      changeLoadingState(LoadState.State_Loading);
+    }
+
+    var listResult = await _jobRepository.fetchStaffRemarkHistory(state.memberId, curPage: _curPage, cancelToken: cancelToken);
+
+    // 处理数据
+    if (listResult.isSuccess) {
+      handleList(listResult.data?.rows);
+    } else {
+      errorMessage = listResult.errorMsg;
+      changeLoadingState(LoadState.State_Error);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+  // 处理数据与展示的逻辑
+  void handleList(List<StaffRemarkHistoryRows>? list) {
+    if (list != null && list.isNotEmpty) {
+      //有数据,判断是刷新还是加载更多的数据
+      if (_curPage == 1) {
+        //刷新的方式
+        state.datas.clear();
+        state.datas.addAll(list);
+        refreshController.finishRefresh();
+
+        //更新展示的状态
+        changeLoadingState(LoadState.State_Success);
+      } else {
+        //加载更多
+        state.datas.addAll(list);
+        refreshController.finishLoad();
+        update();
+      }
+    } else {
+      if (_curPage == 1) {
+        //展示无数据的布局
+        state.datas.clear();
+        changeLoadingState(LoadState.State_Empty);
+        refreshController.finishRefresh();
+      } else {
+        //展示加载完成,没有更多数据了
+        refreshController.finishLoad(IndicatorResult.noMore);
+      }
+    }
+  }
+
+  @override
+  void onReady() {
+    super.onReady();
+    fetchStaffReviews();
+  }
 }

+ 151 - 0
packages/cpt_job/lib/modules/applied_staff_reviews/applied_staff_reviews_item.dart

@@ -0,0 +1,151 @@
+import 'package:cs_resources/constants/color_constants.dart';
+import 'package:cs_resources/generated/assets.dart';
+import 'package:domain/entity/response/staff_remark_history_entity.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
+import 'package:plugin_basic/basic_export.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_text_view.dart';
+import 'package:widgets/shatter/rating_widget.dart';
+
+/**
+ * 员工的评价记录
+ */
+class StaffReviewsItem extends StatelessWidget {
+  final int index;
+  final StaffRemarkHistoryRows item;
+
+  StaffReviewsItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      padding: EdgeInsets.only(bottom: 25, left: 21,right: 21,top: 18.5),
+      margin: EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
+      decoration: BoxDecoration(
+        color: Color(0xFF4DCFF6).withOpacity(0.2), // 设置背景颜色和不透明度
+        borderRadius: BorderRadius.circular(5), // 设置圆角
+      ),
+      child: Column(
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          MyTextView(
+            item.company ?? "",
+            isFontRegular: true,
+            textColor: Colors.white,
+            fontSize: 17,
+          ),
+
+          //态度评分
+          Row(
+            children: [
+              MyTextView(
+                "Attitude".tr,
+                isFontRegular: true,
+                textColor: ColorConstants.textGrayAECAE5,
+                fontSize: 15,
+              ).expanded(flex: 2),
+              RatingWidget(
+                nomalImage: Assets.baseServiceRatingUnselected,
+                selectImage: Assets.baseServiceRatingSelected,
+                size: 21,
+                padding: 5,
+                selectAble: false,
+                integerOnly: true,
+                value: item.attitudeRate,
+                onRatingUpdate: (value) {},
+              ).expanded(flex: 3)
+            ],
+          ).marginOnly(top: 15),
+
+          //表现评分
+          Row(
+            children: [
+              MyTextView(
+                "Performance".tr,
+                isFontRegular: true,
+                textColor: ColorConstants.textGrayAECAE5,
+                fontSize: 15,
+              ).expanded(flex: 2),
+              RatingWidget(
+                nomalImage: Assets.baseServiceRatingUnselected,
+                selectImage: Assets.baseServiceRatingSelected,
+                size: 21,
+                padding: 5,
+                selectAble: false,
+                integerOnly: true,
+                value: item.performanceRate,
+                onRatingUpdate: (value) {},
+              ).expanded(flex: 3)
+            ],
+          ).marginOnly(top: 15),
+
+          //经验评分
+          Row(
+            children: [
+              MyTextView(
+                "Experience".tr,
+                isFontRegular: true,
+                textColor: ColorConstants.textGrayAECAE5,
+                fontSize: 15,
+              ).expanded(flex: 2),
+              RatingWidget(
+                nomalImage: Assets.baseServiceRatingUnselected,
+                selectImage: Assets.baseServiceRatingSelected,
+                size: 21,
+                padding: 5,
+                selectAble: false,
+                integerOnly: true,
+                value: item.experienceRate,
+                onRatingUpdate: (value) {},
+              ).expanded(flex: 3)
+            ],
+          ).marginOnly(top: 15),
+
+          //着装评分
+          Row(
+            children: [
+              MyTextView(
+                "Grooming".tr,
+                isFontRegular: true,
+                textColor: ColorConstants.textGrayAECAE5,
+                fontSize: 15,
+              ).expanded(flex: 2),
+              RatingWidget(
+                nomalImage: Assets.baseServiceRatingUnselected,
+                selectImage: Assets.baseServiceRatingSelected,
+                size: 21,
+                padding: 5,
+                selectAble: false,
+                integerOnly: true,
+                value: item.groomingRate,
+                onRatingUpdate: (value) {},
+              ).expanded(flex: 3)
+            ],
+          ).marginOnly(top: 15),
+
+          MyTextView(
+            item.feedback ?? "",
+            textColor: Colors.white,
+            fontSize: 15,
+            isFontRegular: true,
+            borderColor: Color(0XFF6D92BA),
+            borderWidth: 0.5,
+            boxHeight: 130,
+            boxWidth: double.infinity,
+            paddingTop: 15,
+            paddingLeft: 12.5,
+            paddingRight: 12.5,
+            paddingBottom: 15,
+            marginTop: 18,
+          ),
+
+        ],
+      ),
+    );
+  }
+}

+ 93 - 4
packages/cpt_job/lib/modules/applied_staff_reviews/applied_staff_reviews_page.dart

@@ -1,5 +1,12 @@
+import 'package:cs_resources/constants/color_constants.dart';
+import 'package:cs_resources/generated/assets.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/my_text_view.dart';
+import 'package:widgets/shatter/rating_widget.dart';
+import 'package:widgets/widget_export.dart';
 
 import 'applied_staff_reviews_controller.dart';
 
@@ -10,14 +17,18 @@ import 'package:router/path/router_path.dart';
 import 'package:shared/utils/screen_util.dart';
 import 'package:widgets/my_appbar.dart';
 
+import 'applied_staff_reviews_item.dart';
 import 'applied_staff_reviews_state.dart';
 
 class AppliedStaffReviewsPage extends BaseStatefulPage<AppliedStaffReviewsController> {
   AppliedStaffReviewsPage({Key? key}) : super(key: key);
 
   //启动当前页面
-  static void startInstance(String? memberId) {
-    return Get.start(RouterPath.JOB_APPLIED_STAFF_REVIEWS, arguments: {'memberId': memberId});
+  static void startInstance(String? memberId, String? staffName, double? reviews, String? reviewCount) {
+    return Get.start(
+      RouterPath.JOB_APPLIED_STAFF_REVIEWS,
+      arguments: {'memberId': memberId, 'staffName': staffName, 'reviews': reviews, 'reviewCount': reviewCount},
+    );
   }
 
   @override
@@ -37,6 +48,9 @@ class _AppliedStaffReviewsState extends BaseState<AppliedStaffReviewsPage, Appli
     super.initState();
     state = controller.state;
     state.memberId = Get.arguments['memberId'];
+    state.staffName = Get.arguments['staffName'];
+    state.reviews = Get.arguments['reviews'];
+    state.reviewCount = Get.arguments['reviewCount'];
   }
 
   @override
@@ -44,7 +58,7 @@ class _AppliedStaffReviewsState extends BaseState<AppliedStaffReviewsPage, Appli
     return autoCtlGetBuilder(builder: (controller) {
       return Scaffold(
         extendBodyBehindAppBar: true,
-        appBar: MyAppBar.appBar(context, "Reset Password".tr),
+        appBar: MyAppBar.appBar(context, "Staff Detail".tr),
         body: SafeArea(
           bottom: true,
           top: false,
@@ -63,10 +77,85 @@ class _AppliedStaffReviewsState extends BaseState<AppliedStaffReviewsPage, Appli
                 end: Alignment.bottomCenter,
               ),
             ),
-            child: Container(),
+            child: EasyRefresh(
+              controller: controller.refreshController,
+              onRefresh: controller.onRefresh,
+              onLoad: controller.loadMore,
+              child: LoadStateLayout(
+                state: controller.loadingState,
+                errorMessage: controller.errorMessage,
+                errorRetry: () {
+                  controller.retryRequest();
+                },
+                successSliverWidget: [
+                  //顶部用户信息
+                  SliverToBoxAdapter(
+                    child: _buildRemarkWidget(),
+                  ),
+
+                  //底部工作历史列表
+                  SliverList(
+                      delegate: SliverChildBuilderDelegate(
+                    (context, index) {
+                      return StaffReviewsItem(index: index, item: state.datas[index]);
+                    },
+                    childCount: state.datas.length,
+                  ))
+                ],
+              ),
+            ),
           ),
         ),
       );
     });
   }
+
+  Widget _buildRemarkWidget() {
+    return Container(
+      padding: EdgeInsets.only(bottom: 22, left: 21, right: 21, top: 18.5),
+      margin: EdgeInsets.only(left: 15, right: 15, top: 14.5, bottom: 5),
+      decoration: BoxDecoration(
+        color: Color(0xFF4DCFF6).withOpacity(0.2), // 设置背景颜色和不透明度
+        borderRadius: BorderRadius.circular(5), // 设置圆角
+      ),
+      child: Column(
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          MyTextView(
+            "Job History",
+            fontSize: 17,
+            textColor: ColorConstants.white,
+            isFontMedium: true,
+            marginBottom: 8,
+          ),
+
+          Row(
+            children: [
+              RatingWidget(
+                nomalImage: Assets.baseServiceRatingUnselected,
+                selectImage: Assets.baseServiceRatingSelected,
+                size: 21,
+                padding: 5,
+                selectAble: false,
+                integerOnly: false,
+                value: state.reviews ?? 0,
+                onRatingUpdate: (value) {},
+              ),
+
+              MyTextView(
+                "${state.reviews.toString()} (${state.reviewCount} Reviews)",
+                fontSize: 14,
+                marginLeft: 12,
+                textColor: ColorConstants.textYellowF8AE00,
+                isFontMedium: true,
+
+              ).expanded(),
+
+            ],
+          ),
+
+        ],
+      ),
+    );
+  }
 }

+ 7 - 1
packages/cpt_job/lib/modules/applied_staff_reviews/applied_staff_reviews_state.dart

@@ -1,4 +1,10 @@
-class AppliedStaffReviewsState {
+import 'package:domain/entity/response/staff_remark_history_entity.dart';
 
+class AppliedStaffReviewsState {
   String? memberId;
+  String? staffName;
+  double? reviews;
+  String? reviewCount;
+
+  List<StaffRemarkHistoryRows> datas = [];
 }

+ 4 - 4
packages/cs_domain/lib/entity/response/staff_remark_history_entity.dart

@@ -24,13 +24,13 @@ class StaffRemarkHistoryEntity {
 class StaffRemarkHistoryRows {
 	String? company = null;
 	@JSONField(name: "attitude_rate")
-	int attitudeRate = 0;
+	double attitudeRate = 0;
 	@JSONField(name: "grooming_rate")
-	int groomingRate = 0;
+	double groomingRate = 0;
 	@JSONField(name: "performance_rate")
-	int performanceRate = 0;
+	double performanceRate = 0;
 	@JSONField(name: "experience_rate")
-	int experienceRate = 0;
+	double experienceRate = 0;
 	String? feedback = null;
 	@JSONField(name: "created_at")
 	String? createdAt = null;

+ 8 - 8
packages/cs_domain/lib/generated/json/staff_remark_history_entity.g.dart

@@ -39,19 +39,19 @@ StaffRemarkHistoryRows $StaffRemarkHistoryRowsFromJson(Map<String, dynamic> json
   if (company != null) {
     staffRemarkHistoryRows.company = company;
   }
-  final int? attitudeRate = jsonConvert.convert<int>(json['attitude_rate']);
+  final double? attitudeRate = jsonConvert.convert<double>(json['attitude_rate']);
   if (attitudeRate != null) {
     staffRemarkHistoryRows.attitudeRate = attitudeRate;
   }
-  final int? groomingRate = jsonConvert.convert<int>(json['grooming_rate']);
+  final double? groomingRate = jsonConvert.convert<double>(json['grooming_rate']);
   if (groomingRate != null) {
     staffRemarkHistoryRows.groomingRate = groomingRate;
   }
-  final int? performanceRate = jsonConvert.convert<int>(json['performance_rate']);
+  final double? performanceRate = jsonConvert.convert<double>(json['performance_rate']);
   if (performanceRate != null) {
     staffRemarkHistoryRows.performanceRate = performanceRate;
   }
-  final int? experienceRate = jsonConvert.convert<int>(json['experience_rate']);
+  final double? experienceRate = jsonConvert.convert<double>(json['experience_rate']);
   if (experienceRate != null) {
     staffRemarkHistoryRows.experienceRate = experienceRate;
   }
@@ -81,10 +81,10 @@ Map<String, dynamic> $StaffRemarkHistoryRowsToJson(StaffRemarkHistoryRows entity
 extension StaffRemarkHistoryRowsExtension on StaffRemarkHistoryRows {
   StaffRemarkHistoryRows copyWith({
     String? company,
-    int? attitudeRate,
-    int? groomingRate,
-    int? performanceRate,
-    int? experienceRate,
+    double? attitudeRate,
+    double? groomingRate,
+    double? performanceRate,
+    double? experienceRate,
     String? feedback,
     String? createdAt,
   }) {

+ 1 - 0
packages/cs_resources/lib/constants/color_constants.dart

@@ -32,6 +32,7 @@ class ColorConstants {
   static const Color textGreen0AC074 = Color(0xFF0AC074);
   static const Color textRedFF6262 = Color(0xFFFF6262);
   static const Color textBlue06D9FF = Color(0xFF06D9FF);
+  static const Color textYellowF8AE00 = Color(0xFFF8AE00);
 
   //黑暗模式的一些色值
   static const Color darkBlackBg = Color(0xFF0F0F0F);

+ 54 - 86
packages/cs_widgets/lib/shatter/rating_widget.dart

@@ -2,34 +2,15 @@ import 'package:flutter/material.dart';
 import 'package:widgets/my_load_image.dart';
 
 class RatingWidget extends StatefulWidget {
-  /// 星星数量
   final int count;
-
-  /// 最大评分值
   final double maxRating;
-
-  /// 当前选中的评分值
   final double value;
-
-  /// 没一颗星的大小
   final double size;
-
-  /// 每个星之间的间距
   final double padding;
-
-  /// 空星的图片资源
   final String nomalImage;
-
-  /// 满星的图片资源
   final String selectImage;
-
-  /// 是否可以操作选择
   final bool selectAble;
-
-  /// 选中评分的回调
   final ValueChanged<String> onRatingUpdate;
-
-  /// 是否只显示整数的分数
   final bool integerOnly;
 
   RatingWidget({
@@ -53,44 +34,46 @@ class _RatingWidgetState extends State<RatingWidget> {
   late double value;
 
   @override
+  void initState() {
+    super.initState();
+    value = widget.value;
+  }
+
+  @override
   Widget build(BuildContext context) {
-    return Listener(
+    return GestureDetector(
+      onTapDown: widget.selectAble ? _handleTap : null,
+      onHorizontalDragUpdate: widget.selectAble ? _handleDrag : null,
       child: buildRowRating(),
-      onPointerDown: (PointerDownEvent event) {
-        double x = event.localPosition.dx;
-        if (x < 0) x = 0;
-        pointValue(x);
-      },
-      onPointerMove: (PointerMoveEvent event) {
-        double x = event.localPosition.dx;
-        if (x < 0) x = 0;
-        pointValue(x);
-      },
-      onPointerUp: (_) {},
-      behavior: HitTestBehavior.deferToChild,
     );
   }
 
-  pointValue(double dx) {
-    if (!widget.selectAble) {
-      return;
-    }
+  void _handleTap(TapDownDetails details) {
+    _updateValue(details.localPosition.dx);
+  }
+
+  void _handleDrag(DragUpdateDetails details) {
+    _updateValue(details.localPosition.dx);
+  }
+
+  void _updateValue(double dx) {
+    if (dx < 0) dx = 0;
     if (dx >= widget.size * widget.count + widget.padding * (widget.count - 1)) {
       value = widget.maxRating;
     } else {
-      for (double i = 1; i < widget.count + 1; i++) {
-        if (dx > widget.size * i + widget.padding * (i - 1) && dx < widget.size * i + widget.padding * i) {
+      for (int i = 1; i <= widget.count; i++) {
+        if (dx < i * (widget.size + widget.padding)) {
           value = i * (widget.maxRating / widget.count);
-          break;
-        } else if (dx > widget.size * (i - 1) + widget.padding * (i - 1) && dx < widget.size * i + widget.padding * i) {
-          value = (dx - widget.padding * (i - 1)) / (widget.size * widget.count) * widget.maxRating;
+          if (dx < (i - 1) * (widget.size + widget.padding) + widget.size) {
+            value -= (widget.size - (dx - (i - 1) * (widget.size + widget.padding))) / widget.size * (widget.maxRating / widget.count);
+          }
           break;
         }
       }
     }
 
     if (widget.integerOnly) {
-      value = value.ceilToDouble(); // 直接向上取整
+      value = value.ceilToDouble();
     }
 
     setState(() {
@@ -99,28 +82,20 @@ class _RatingWidgetState extends State<RatingWidget> {
   }
 
   int fullStars() {
-    if (value != null) {
-      return (value / (widget.maxRating / widget.count)).ceil(); // 使用向上取整
-    }
-    return 0;
+    return (value / (widget.maxRating / widget.count)).floor();
   }
 
   double star() {
     if (widget.integerOnly) {
       return 0;
     }
-    if (value != null) {
-      if (widget.count / fullStars() == widget.maxRating / value) {
-        return 0;
-      }
-      return (value % (widget.maxRating / widget.count)) / (widget.maxRating / widget.count);
-    }
-    return 0;
+    return (value % (widget.maxRating / widget.count)) / (widget.maxRating / widget.count) * widget.size;
   }
 
   List<Widget> buildRow() {
     int full = fullStars();
     List<Widget> children = [];
+
     for (int i = 0; i < full; i++) {
       children.add(MyAssetImage(
         widget.selectImage,
@@ -129,22 +104,30 @@ class _RatingWidgetState extends State<RatingWidget> {
       ));
 
       if (i < widget.count - 1) {
-        children.add(
-          SizedBox(
-            width: widget.padding,
-          ),
-        );
+        children.add(SizedBox(width: widget.padding));
       }
     }
+
     if (full < widget.count) {
-      children.add(ClipRect(
-        clipper: SMClipper(rating: star() * widget.size),
-        child: MyAssetImage(
-          widget.selectImage,
-          width: widget.size,
-          height: widget.size,
+      children.add(
+        Stack(
+          children: [
+            MyAssetImage(
+              widget.nomalImage,
+              width: widget.size,
+              height: widget.size,
+            ),
+            ClipRect(
+              clipper: SMClipper(rating: star()),
+              child: MyAssetImage(
+                widget.selectImage,
+                width: widget.size,
+                height: widget.size,
+              ),
+            ),
+          ],
         ),
-      ));
+      );
     }
 
     return children;
@@ -159,34 +142,20 @@ class _RatingWidgetState extends State<RatingWidget> {
         height: widget.size,
       ));
       if (i < widget.count - 1) {
-        children.add(SizedBox(
-          width: widget.padding,
-        ));
+        children.add(SizedBox(width: widget.padding));
       }
     }
     return children;
   }
 
   Widget buildRowRating() {
-    return Container(
-      child: Stack(
-        children: <Widget>[
-          Row(
-            children: buildNomalRow(),
-          ),
-          Row(
-            children: buildRow(),
-          )
-        ],
-      ),
+    return Stack(
+      children: <Widget>[
+        Row(children: buildNomalRow()),
+        Row(children: buildRow()),
+      ],
     );
   }
-
-  @override
-  void initState() {
-    super.initState();
-    value = widget.value;
-  }
 }
 
 class SMClipper extends CustomClipper<Rect> {
@@ -204,4 +173,3 @@ class SMClipper extends CustomClipper<Rect> {
     return rating != oldClipper.rating;
   }
 }
-