import 'package:flutter/material.dart'; import 'package:flustars/flustars.dart'; import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:get/get.dart'; import 'package:velocity_x/velocity_x.dart'; import 'package:aku_community/base/base_style.dart'; import 'package:aku_community/model/manager/suggestion_or_complain_model.dart'; import 'package:aku_community/ui/manager/advice/advice_detail_page.dart'; import 'package:aku_community/utils/headers.dart'; import 'package:aku_community/widget/views/horizontal_image_view.dart'; class AdviceCard extends StatefulWidget { final SuggestionOrComplainModel? model; AdviceCard({Key? key, this.model}) : super(key: key); @override _AdviceCardState createState() => _AdviceCardState(); } class _AdviceCardState extends State { ///1.未反馈,2.反馈中,3.已反馈 String? get statusValue => { 1: '未反馈', 2: '反馈中', 3: '已反馈', }[widget.model!.status!]; Widget _buildRating() { if (widget.model!.score == null) return SizedBox(); else return [ 120.hb, 24.wb, '评测得分'.text.size(32.sp).color(ktextSubColor).make(), Spacer(), RatingBarIndicator( itemBuilder: (context, index) => Icon( Icons.star_rounded, color: kPrimaryColor, ), rating: widget.model!.score! / 2, itemSize: 40.w, ), 24.wb, ].row(); } @override Widget build(BuildContext context) { return MaterialButton( elevation: 0, padding: EdgeInsets.zero, color: Colors.white, onPressed: () => Get.to(() => AdviceDetailPage(model: widget.model)), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.w), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ 20.hb, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ DateUtil.formatDate( widget.model!.createDate, format: 'yyyy年MM月dd日', ).text.size(32.sp).black.bold.make(), statusValue!.text.size(24.sp).color(Color(0xFFFF8200)).make(), ], ).pSymmetric(h: 28.w), Divider( indent: 28.w, endIndent: 28.w, height: 50.w, thickness: 1.w, color: Color(0xFFE8E8E8), ), widget.model!.content!.text .size(28.w) .black .make() .pSymmetric(h: 28.w), HorizontalImageView( widget.model!.imgUrls!.map((e) => e.url).toList()), widget.model!.score == null ? SizedBox() : Divider( indent: 32.w, endIndent: 32.w, ), _buildRating(), ], ), ); } }