|
|
|
import 'package:flutter/cupertino.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:huixiang/business_system/home/vip/vip_recharge_flow.dart';
|
|
|
|
import 'package:huixiang/business_system/order/ticket/ticket_tab.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import '../../../view_widget/my_appbar.dart';
|
|
|
|
import '../../../view_widget/my_tab.dart';
|
|
|
|
import 'balance_change_record.dart';
|
|
|
|
import 'bus_vip_list.dart';
|
|
|
|
|
|
|
|
class BusinessVipPage extends StatefulWidget {
|
|
|
|
final Map<String, dynamic> arguments;
|
|
|
|
|
|
|
|
BusinessVipPage({this.arguments});
|
|
|
|
|
|
|
|
@override
|
|
|
|
State<StatefulWidget> createState() {
|
|
|
|
return _BusinessVipPage();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class _BusinessVipPage extends State<BusinessVipPage>
|
|
|
|
with SingleTickerProviderStateMixin {
|
|
|
|
List<GlobalKey> _allKey = [];
|
|
|
|
String storeId;
|
|
|
|
TabController tabController;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
tabController = TabController(length: 3, vsync: this, initialIndex: widget?.arguments["index"] ?? 0);
|
|
|
|
tabController.addListener(() {
|
|
|
|
if (!tabController.indexIsChanging) {
|
|
|
|
setState(() {});
|
|
|
|
FocusScope.of(context).requestFocus(FocusNode());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
loadFinish();
|
|
|
|
storeId = widget.arguments["storeId"];
|
|
|
|
}
|
|
|
|
|
|
|
|
loadFinish() {
|
|
|
|
_allKey = [GlobalKey(), GlobalKey(), GlobalKey()];
|
|
|
|
setState(() {});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
FocusScope.of(context).requestFocus(FocusNode());
|
|
|
|
},
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
Expanded(child: DefaultTabController(
|
|
|
|
length: 3,
|
|
|
|
child: Scaffold(
|
|
|
|
resizeToAvoidBottomInset: false,
|
|
|
|
appBar: MyAppBar(
|
|
|
|
title: "",
|
|
|
|
leadingColor: Colors.black,
|
|
|
|
background: Colors.white,
|
|
|
|
toolbarHeight: kToolbarHeight + MediaQuery.of(context).padding.top,
|
|
|
|
bottom: TabBar (
|
|
|
|
// isScrollable: true, //可滚动
|
|
|
|
//去掉按钮阴影
|
|
|
|
overlayColor: MaterialStateProperty.all(Colors.white),
|
|
|
|
indicator: const TicketTab(
|
|
|
|
width: 44,
|
|
|
|
borderSide:
|
|
|
|
BorderSide(width: 2.0, color: Color(0xFF30415B))),
|
|
|
|
labelColor: Colors.black,
|
|
|
|
labelStyle: TextStyle(
|
|
|
|
fontSize: 15.sp,
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
),
|
|
|
|
unselectedLabelStyle: TextStyle(
|
|
|
|
fontSize: 15.sp,
|
|
|
|
fontWeight: FontWeight.normal,
|
|
|
|
color: Color(0xFF666666)),
|
|
|
|
controller: tabController,
|
|
|
|
//未选中文字颜色
|
|
|
|
unselectedLabelColor: Color(0xFF666666),
|
|
|
|
//指示器与文字等宽
|
|
|
|
tabs: <Widget>[
|
|
|
|
MyTab(text: "会员列表"),
|
|
|
|
MyTab(text: "会员充值流水"),
|
|
|
|
MyTab(text: "会员余额变动"),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
body: TabBarView(
|
|
|
|
controller: tabController,
|
|
|
|
children: [
|
|
|
|
BusVipList(
|
|
|
|
_allKey[0],
|
|
|
|
storeId),
|
|
|
|
VipRechargeFlow(
|
|
|
|
_allKey[1],
|
|
|
|
storeId),
|
|
|
|
BalanceChangeRecord(
|
|
|
|
_allKey[2],
|
|
|
|
storeId,),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
// SizedBox(
|
|
|
|
// height: 76.h,
|
|
|
|
// ),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|