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(),
|
|||
|
]),
|
|||
|
),
|
|||
|
),
|
|||
|
);
|
|||
|
}
|
|||
|
}
|