You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.8 KiB

// Flutter imports:
import 'package:flutter/material.dart';
// Package imports:
import 'package:common_utils/common_utils.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:velocity_x/velocity_x.dart';
// Project imports:
import 'package:akuCommunity/base/base_style.dart';
import 'package:akuCommunity/model/manager/suggestion_or_complain_model.dart';
import 'package:akuCommunity/ui/manager/advice/advice_detail_page.dart';
import 'package:akuCommunity/utils/headers.dart';
import 'package:akuCommunity/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<AdviceCard> {
///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: AdviceDetailPage(model: widget.model).to,
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(),
],
),
);
}
}