提交 40411fb9 authored 作者: yueweilu's avatar yueweilu

应付明细

上级 8c715ac0
...@@ -13,11 +13,19 @@ class BookPayController extends GetxController { ...@@ -13,11 +13,19 @@ class BookPayController extends GetxController {
PayModel(type: 3, name: '紫荆币', icon: 'assets/images/pay_coin.png', selected: false), PayModel(type: 3, name: '紫荆币', icon: 'assets/images/pay_coin.png', selected: false),
]; ];
// 时候展示底部视图
bool showDetail = false;
// 支付方式 // 支付方式
late PayModel _payModel = pays.first; late PayModel _payModel = pays.first;
PayModel get payModel => _payModel; PayModel get payModel => _payModel;
void show(){
showDetail = !showDetail;
update();
}
void setPayModel(PayModel payModel){ void setPayModel(PayModel payModel){
for (PayModel model in pays) { for (PayModel model in pays) {
if (model.type == payModel.type){ if (model.type == payModel.type){
......
...@@ -17,92 +17,195 @@ class _BookPayPageState extends State<BookPayPage> { ...@@ -17,92 +17,195 @@ class _BookPayPageState extends State<BookPayPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GetBuilder<BookPayController>( return GetBuilder<BookPayController>(
init: BookPayController(widget.buy), init: BookPayController(widget.buy),
builder: (controller) => Scaffold( builder: (controller) => Stack(
backgroundColor: Colours.cF9, children: [
appBar: AppBar(title: const Text('支付'),), Scaffold(
body: SingleChildScrollView( backgroundColor: Colours.cF9,
child: Column( appBar: AppBar(title: const Text('支付'),),
children: [ body: SingleChildScrollView(
ListView.builder( child: Column(
physics: const NeverScrollableScrollPhysics(), children: [
shrinkWrap:true, ListView.builder(
itemBuilder: (BuildContext context, int index){ physics: const NeverScrollableScrollPhysics(),
return BuildItem(model: controller.buy[index],); shrinkWrap:true,
}, itemBuilder: (BuildContext context, int index){
itemCount: controller.buy.length, return BuildItem(model: controller.buy[index],);
), },
itemCount: controller.buy.length,
),
SizedBox(height: 10.w,), SizedBox(height: 10.w,),
Container( Container(
margin: EdgeInsets.only(left: 10.w,right: 10.w), margin: EdgeInsets.only(left: 10.w,right: 10.w),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius:BorderRadius.circular(8.w), borderRadius:BorderRadius.circular(8.w),
color: Colors.white, color: Colors.white,
boxShadow: [ boxShadow: [
BoxShadow( BoxShadow(
color: Colours.cC7.withOpacity(0.5), color: Colours.cC7.withOpacity(0.5),
spreadRadius: 2.w, spreadRadius: 2.w,
blurRadius: 5.w, blurRadius: 5.w,
offset: Offset(3.w, 0), // changes the position of the shadow offset: Offset(3.w, 0), // changes the position of the shadow
), ),
] ]
),
child: Column(
children: [
GestureDetector(
child: _buildWidget(title: '优惠券',icon: 'assets/images/pay_coupon.png',),
onTap: (){
context.pushNamed(Routes.payCoupon);
},
), ),
Container(height: 0.5.w,color: Colours.cF0,margin: EdgeInsets.only(left: 10.w),), child: Column(
GestureDetector( children: [
child: _buildWidget(title: '积分抵扣',icon: 'assets/images/pay_point.png',), GestureDetector(
onTap: (){ child: _buildWidget(title: '优惠券',icon: 'assets/images/pay_coupon.png',),
context.pushNamed(Routes.creditPoints); onTap: (){
context.pushNamed(Routes.payCoupon);
},
),
Container(height: 0.5.w,color: Colours.cF0,margin: EdgeInsets.only(left: 10.w),),
GestureDetector(
child: _buildWidget(title: '积分抵扣',icon: 'assets/images/pay_point.png',),
onTap: (){
context.pushNamed(Routes.creditPoints);
},
),
],
),
),
Container(
margin: EdgeInsets.only(left: 10.w,right: 10.w,top: 10.w),
decoration: BoxDecoration(
borderRadius:BorderRadius.circular(8.w),
color: Colors.white,
boxShadow: [
BoxShadow(
color: Colours.cC7.withOpacity(0.5),
spreadRadius: 2.w,
blurRadius: 5.w,
offset: const Offset(3, 0), // changes the position of the shadow
),
]
),
child: ListView.builder(
physics: const NeverScrollableScrollPhysics(),
padding: const EdgeInsets.symmetric(horizontal: 10),
shrinkWrap:true,
itemBuilder: (BuildContext context, int index){
PayModel model = controller.pays[index];
return GestureDetector(
onTap: (){
controller.setPayModel(model);
},
child: BuildPayWay(model:model,));
}, },
itemCount: controller.pays.length,
), ),
], ),
), ],
), ),
Container( ),
margin: EdgeInsets.only(left: 10.w,right: 10.w,top: 10.w), bottomNavigationBar: SafeArea(child:BuildPayCount(
decoration: BoxDecoration( payTap: (){
borderRadius:BorderRadius.circular(8.w), Console.log('--------------支付------------------');
color: Colors.white,
boxShadow: [ },
BoxShadow( showTap: (){
color: Colours.cC7.withOpacity(0.5), controller.show();
spreadRadius: 2.w, Console.log('--------------展示优惠详情------------------');
blurRadius: 5.w, }
offset: const Offset(3, 0), // changes the position of the shadow )),
), ),
] controller.showDetail?Positioned(
left: 0.w,
bottom: 50.w,
right: 0.w,
top: 0.w,
child: GestureDetector(
onTap: (){
controller.show();
},
child: Container(
color:const Color(0xFF000000).withOpacity(0.5),
child: Align(
alignment: Alignment.bottomCenter,
child: ClipRRect(
borderRadius: BorderRadius.only(topRight: Radius.circular(8.w),topLeft: Radius.circular(8.w)),
child: Container(
height: 240.w,
color: Colors.white,
child: _buildPayDetail(controller),
),
),
), ),
child: ListView.builder( ),
physics: const NeverScrollableScrollPhysics(), ),
padding: const EdgeInsets.symmetric(horizontal: 10), ):const SizedBox()
shrinkWrap:true, ],
itemBuilder: (BuildContext context, int index){ )
PayModel model = controller.pays[index]; );
return GestureDetector( }
onTap: (){
controller.setPayModel(model); Widget _buildPayDetail(BookPayController controller){
}, return Column(
child: BuildPayWay(model:model,)); children: [
}, Stack(
itemCount: controller.pays.length, children: [
Container(
// color: Colors.red,
padding: EdgeInsets.all(15.w),
child: const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('应付明细',textAlign:TextAlign.center),
],
),
),
Positioned(
right: 10.w,
top: 10.w,
child: GestureDetector(
onTap: (){
controller.show();
},
child: SizedBox(
width: 20.w,
height: 20.w,
child: Image.asset('assets/images/close.png'),
), ),
), ),
)
],
),
SizedBox(height: 50.w,),
Container(
margin: EdgeInsets.symmetric(horizontal: 15.w),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('总价',style: TextStyle(fontSize: 16.w,height: 1.5,color: Colours.c3,fontWeight: Fonts.medium),),
Text('¥199.80',style: TextStyle(fontSize: 15.w,height: 1.5,color: AppTheme.primary,fontWeight: Fonts.medium),)
],
),
Gaps.vGaps15,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('优惠券抵扣',style: TextStyle(fontSize: 13.w,height: 1.5,color: Colours.c9,),),
Text('减¥199.80',style: TextStyle(fontSize: 13.w,height: 1.5,color: AppTheme.primary),)
],
),
Gaps.vGaps10,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('积分抵扣',style: TextStyle(fontSize: 13.w,height: 1.5,color: Colours.c9,),),
Text('减¥199.80',style: TextStyle(fontSize: 13.w,height: 1.5,color: AppTheme.primary),)
],
)
], ],
), ),
), )
bottomNavigationBar: SafeArea(child: BuildPayCount()), ],
),
); );
} }
Widget _buildWidget({ Widget _buildWidget({
required String title, required String title,
required String icon, required String icon,
......
part of book_pay; part of book_pay;
class BuildPayCount extends StatelessWidget { class BuildPayCount extends StatelessWidget {
const BuildPayCount({Key? key}) : super(key: key); final void Function()? payTap;
final void Function()? showTap;
const BuildPayCount({
Key? key,
required this.payTap,
required this.showTap
}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -13,19 +20,32 @@ class BuildPayCount extends StatelessWidget { ...@@ -13,19 +20,32 @@ class BuildPayCount extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Row( GestureDetector(
children: [ onTap: showTap,
Text('应付:',style: TextStyle(fontSize:14.w,color: Colours.c3 ,height: 1.1),), child: Row(
Text('¥98.9',style: TextStyle(fontSize:15.w,color:AppTheme.primary,fontWeight: Fonts.medium ,height: 1.1),) crossAxisAlignment: CrossAxisAlignment.center,
], children: [
Text('应付:',style: TextStyle(fontSize:14.w,color: Colours.c3 ,height: 1.1),),
Text('¥98.9',style: TextStyle(fontSize:15.w,color:AppTheme.primary,fontWeight: Fonts.medium ,height: 1.1),),
SizedBox(
// color: Colors.cyan,
width: 20.w,
height: 20.w,
child: Image.asset('assets/images/pay_up.png')
)
],
),
), ),
Container( GestureDetector(
decoration: BoxDecoration( onTap: payTap,
borderRadius: BorderRadius.circular(15.w), child: Container(
color: AppTheme.primary decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15.w),
color: AppTheme.primary
),
padding: EdgeInsets.symmetric(horizontal:13.5.w,vertical: 8.w),
child: Text('确认支付',style: TextStyle(fontSize: 14.w,fontWeight: Fonts.medium,color: Colors.white),),
), ),
padding: EdgeInsets.symmetric(horizontal:13.5.w,vertical: 8.w),
child: Text('确认支付',style: TextStyle(fontSize: 14.w,fontWeight: Fonts.medium,color: Colors.white),),
) )
], ],
), ),
......
...@@ -189,6 +189,8 @@ class BookshopController extends GetxController { ...@@ -189,6 +189,8 @@ class BookshopController extends GetxController {
CourseModel(bookName: '哈1',bookId: 111,vipPrice: '12.33',authors: 'John',status: 1), CourseModel(bookName: '哈1',bookId: 111,vipPrice: '12.33',authors: 'John',status: 1),
CourseModel(bookName: '哈2',bookId: 123,vipPrice: '12.00',authors: 'json',status: 1), CourseModel(bookName: '哈2',bookId: 123,vipPrice: '12.00',authors: 'json',status: 1),
CourseModel(bookName: '哈3',bookId: 11,vipPrice: '12.43',authors: 'hash',status: 1), CourseModel(bookName: '哈3',bookId: 11,vipPrice: '12.43',authors: 'hash',status: 1),
CourseModel(bookName: '哈3',bookId: 11,vipPrice: '12.43',authors: 'hash',status: 1),
CourseModel(bookName: '哈3',bookId: 11,vipPrice: '12.43',authors: 'hash',status: 1),
]; ];
} }
......
...@@ -11,6 +11,7 @@ import '../../routes/index.dart'; ...@@ -11,6 +11,7 @@ import '../../routes/index.dart';
import '../../store/index.dart'; import '../../store/index.dart';
import '../book_shop/index.dart'; import '../book_shop/index.dart';
import '../course/index.dart'; import '../course/index.dart';
import '../web/index.dart';
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论