317 lines
13 KiB
Dart
317 lines
13 KiB
Dart
/// 我的订单
|
||
library;
|
||
|
||
import 'package:flutter/material.dart';
|
||
import 'package:get/get.dart';
|
||
|
||
import '../../behavior/custom_scroll_behavior.dart';
|
||
|
||
class Order extends StatefulWidget {
|
||
const Order({super.key});
|
||
|
||
@override
|
||
State<Order> createState() => _OrderState();
|
||
}
|
||
|
||
class _OrderState extends State<Order> with SingleTickerProviderStateMixin {
|
||
GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();
|
||
|
||
List tabList = [
|
||
{'name': "全部"},
|
||
{'name': "待付款", 'badge': 1},
|
||
{'name': "待核销"},
|
||
{'name': "已完成"},
|
||
{'name': "取消"}
|
||
];
|
||
|
||
late ScrollController scrollController = ScrollController();
|
||
late TabController tabController = TabController(initialIndex: 0, length: tabList.length, vsync: this);
|
||
|
||
Widget emptyTip() {
|
||
return Column(
|
||
mainAxisAlignment: MainAxisAlignment.center,
|
||
spacing: 5.0,
|
||
children: [
|
||
Image.asset(
|
||
'assets/images/empty.png',
|
||
width: 100.0,
|
||
),
|
||
Text(
|
||
'还没有相关订单~',
|
||
style: TextStyle(color: Colors.grey, fontSize: 12.0),
|
||
)
|
||
],
|
||
);
|
||
}
|
||
|
||
@override
|
||
void initState() {
|
||
super.initState();
|
||
}
|
||
|
||
@override
|
||
void dispose() {
|
||
scrollController.dispose();
|
||
tabController.dispose();
|
||
super.dispose();
|
||
}
|
||
|
||
@override
|
||
Widget build(BuildContext context) {
|
||
return Scaffold(
|
||
key: scaffoldKey,
|
||
backgroundColor: Colors.white,
|
||
appBar: AppBar(
|
||
forceMaterialTransparency: true,
|
||
titleSpacing: 1.0,
|
||
title: Container(
|
||
height: 35.0,
|
||
decoration: BoxDecoration(
|
||
color: Colors.grey[50],
|
||
borderRadius: BorderRadius.circular(30.0),
|
||
),
|
||
child: TextField(
|
||
decoration: InputDecoration(
|
||
isDense: true,
|
||
hintText: "搜索订单",
|
||
hintStyle: TextStyle(color: Colors.black38, fontSize: 14.0),
|
||
prefixIcon: Icon(
|
||
Icons.search,
|
||
color: Colors.black38,
|
||
size: 21.0,
|
||
),
|
||
contentPadding: EdgeInsets.symmetric(vertical: 0, horizontal: 10.0),
|
||
border: OutlineInputBorder(borderSide: BorderSide.none, borderRadius: BorderRadius.circular(30.0))),
|
||
cursorColor: Colors.black,
|
||
onChanged: (val) {
|
||
debugPrint(val);
|
||
},
|
||
),
|
||
),
|
||
bottom: PreferredSize(
|
||
preferredSize: Size.fromHeight(45.0),
|
||
child: Row(children: [
|
||
Expanded(
|
||
child: TabBar(
|
||
controller: tabController,
|
||
tabs: tabList
|
||
.map((item) => Container(
|
||
alignment: Alignment.center,
|
||
height: 45.0,
|
||
child: Badge.count(
|
||
backgroundColor: Colors.red,
|
||
count: item['badge'] ?? 0,
|
||
isLabelVisible: item['badge'] != null ? true : false,
|
||
child: Text(item['name'])),
|
||
))
|
||
.toList(),
|
||
isScrollable: false,
|
||
overlayColor: WidgetStateProperty.all(Colors.transparent),
|
||
unselectedLabelColor: Colors.black87,
|
||
labelColor: Color(0xFFFF5000),
|
||
indicator: UnderlineTabIndicator(
|
||
borderRadius: BorderRadius.circular(10.0),
|
||
borderSide: BorderSide(color: Color(0xFFFF5000), width: 2.0),
|
||
),
|
||
indicatorSize: TabBarIndicatorSize.tab,
|
||
unselectedLabelStyle: TextStyle(fontSize: 16.0, fontFamily: 'Microsoft YaHei'),
|
||
labelStyle: TextStyle(fontSize: 18.0, fontFamily: 'Microsoft YaHei', fontWeight: FontWeight.w700),
|
||
dividerHeight: 0,
|
||
padding: EdgeInsets.symmetric(horizontal: 10.0),
|
||
labelPadding: EdgeInsets.symmetric(horizontal: 10.0),
|
||
indicatorPadding: EdgeInsets.symmetric(horizontal: 15.0, vertical: 5.0),
|
||
),
|
||
),
|
||
]),
|
||
),
|
||
),
|
||
body: ScrollConfiguration(
|
||
behavior: CustomScrollBehavior().copyWith(scrollbars: false),
|
||
child: Container(
|
||
color: Colors.grey[50],
|
||
child: TabBarView(controller: tabController, children: [
|
||
ListView(
|
||
controller: scrollController,
|
||
physics: BouncingScrollPhysics(),
|
||
padding: EdgeInsets.all(10.0),
|
||
children: [
|
||
GestureDetector(
|
||
child: Container(
|
||
margin: EdgeInsets.only(bottom: 10.0),
|
||
padding: EdgeInsets.all(10.0),
|
||
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(15.0), boxShadow: [
|
||
BoxShadow(
|
||
color: Colors.black.withAlpha(10),
|
||
offset: Offset(0.0, 1.0),
|
||
blurRadius: 1.0,
|
||
spreadRadius: 0.0,
|
||
),
|
||
]),
|
||
child: Column(
|
||
spacing: 10.0,
|
||
children: [
|
||
Row(
|
||
children: [
|
||
Wrap(
|
||
crossAxisAlignment: WrapCrossAlignment.center,
|
||
spacing: 5.0,
|
||
children: [
|
||
ClipOval(
|
||
child: Image.asset(
|
||
'assets/images/avatar/img11.jpg',
|
||
width: 25.0,
|
||
),
|
||
),
|
||
Text('老白干自营旗舰店'),
|
||
Icon(
|
||
Icons.arrow_forward_ios_rounded,
|
||
color: Colors.grey,
|
||
size: 12.0,
|
||
),
|
||
],
|
||
),
|
||
Spacer(),
|
||
Text(
|
||
'待付款',
|
||
style: TextStyle(color: Colors.red),
|
||
)
|
||
],
|
||
),
|
||
Row(
|
||
crossAxisAlignment: CrossAxisAlignment.start,
|
||
spacing: 10.0,
|
||
children: [
|
||
Image.network(
|
||
'https://img13.360buyimg.com/n1/jfs/t1/263909/5/4187/123220/676eb220F3e481086/0cee829b1894fc4c.jpg',
|
||
width: 80.0,
|
||
),
|
||
Expanded(
|
||
child: Column(
|
||
crossAxisAlignment: CrossAxisAlignment.start,
|
||
spacing: 5.0,
|
||
children: [
|
||
Text(
|
||
'茅台(MOUTAI)飞天 53度 酱香型白酒 500ml*2 海外版送礼袋年货送礼',
|
||
maxLines: 2,
|
||
overflow: TextOverflow.ellipsis,
|
||
),
|
||
Row(
|
||
children: [
|
||
Text(
|
||
'¥3800',
|
||
style: TextStyle(color: Colors.red),
|
||
),
|
||
Spacer(),
|
||
Text(
|
||
'x10',
|
||
style: TextStyle(color: Colors.grey),
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
)
|
||
],
|
||
),
|
||
// 提示信息
|
||
Container(
|
||
padding: EdgeInsets.all(5.0),
|
||
decoration: BoxDecoration(
|
||
color: Colors.grey[50],
|
||
borderRadius: BorderRadius.circular(5.0),
|
||
),
|
||
child: Row(
|
||
children: [
|
||
Spacer(),
|
||
Text.rich(
|
||
TextSpan(children: [
|
||
TextSpan(text: '实付款: '),
|
||
TextSpan(
|
||
text: '¥38000',
|
||
style: TextStyle(color: Colors.red),
|
||
),
|
||
]),
|
||
),
|
||
],
|
||
),
|
||
),
|
||
// 按钮组
|
||
Row(
|
||
spacing: 10.0,
|
||
mainAxisAlignment: MainAxisAlignment.end,
|
||
children: [
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(backgroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('取消订单'),
|
||
),
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(
|
||
backgroundColor: WidgetStateProperty.all(Color(0xff07c160)), foregroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('去支付'),
|
||
),
|
||
],
|
||
),
|
||
Row(
|
||
spacing: 10.0,
|
||
mainAxisAlignment: MainAxisAlignment.end,
|
||
children: [
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(
|
||
backgroundColor: WidgetStateProperty.all(Color(0xFF10B9FC)), foregroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('评价'),
|
||
),
|
||
],
|
||
),
|
||
Row(
|
||
spacing: 10.0,
|
||
mainAxisAlignment: MainAxisAlignment.end,
|
||
children: [
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(backgroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('申请退款'),
|
||
),
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(
|
||
backgroundColor: WidgetStateProperty.all(Color(0xFFFCBE13)), foregroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('联系客服'),
|
||
),
|
||
],
|
||
),
|
||
|
||
Row(
|
||
spacing: 10.0,
|
||
mainAxisAlignment: MainAxisAlignment.end,
|
||
children: [
|
||
ElevatedButton(
|
||
onPressed: () {},
|
||
style: ButtonStyle(backgroundColor: WidgetStateProperty.all(Colors.white)),
|
||
child: Text('删除'),
|
||
),
|
||
],
|
||
),
|
||
],
|
||
),
|
||
),
|
||
onTap: () {
|
||
Get.toNamed('/order/detail');
|
||
},
|
||
),
|
||
],
|
||
),
|
||
emptyTip(),
|
||
emptyTip(),
|
||
emptyTip(),
|
||
emptyTip(),
|
||
emptyTip(),
|
||
]),
|
||
),
|
||
),
|
||
);
|
||
}
|
||
}
|