import 'package:cpt_property/components/bottomDialog.dart'; import 'package:cs_resources/generated/assets.dart'; import 'package:flutter/material.dart'; import 'package:auto_route/auto_route.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:plugin_platform/engine/toast/toast_engine.dart'; import 'package:router/ext/auto_router_extensions.dart'; import 'package:shared/utils/color_utils.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/my_load_image.dart'; import 'package:widgets/my_text_view.dart'; import '../../../router/page/property_page_router.dart'; import 'property_ioan_vm.dart'; @RoutePage() class PropertyIoanPage extends HookConsumerWidget { const PropertyIoanPage({Key? key}) : super(key: key); //启动当前页面 static void startInstance({BuildContext? context}) { if (context != null) { context.router.push(const PropertyIoanPageRoute()); } else { appRouter.push(const PropertyIoanPageRoute()); } } Widget _buildContentTopAdviceSection(BuildContext context,WidgetRef ref, _vm){ return Column( children: [ MyTextView( "YY Home", textColor: ColorUtils.string2Color('#000000'), fontSize: 27, isFontMedium: true, textAlign: TextAlign.center, ), MyTextView( "Find the best home loan for you", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, isFontRegular: true, marginBottom: 14, textAlign: TextAlign.center, ), Container( width: double.infinity, height: 210, decoration: BoxDecoration( borderRadius: BorderRadius.circular(0), color: ColorUtils.string2Color('#FEFEFE'), image: const DecorationImage( image: AssetImage('packages/cs_resources/${Assets.propertyHomeLoanBg}'), // 使用包中的资源 fit: BoxFit.cover, ), ), child: Column( children: [ MyTextView( "YY Home exclusive rates:", textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 15, boxWidth: 237, boxHeight: 35, alignment: Alignment.center, textAlign: TextAlign.center, marginTop: 5.5, backgroundColor: ColorUtils.string2Color('#4161D0') ), Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 105, height: 105, padding: const EdgeInsets.all(5), color: ColorUtils.string2Color('#4161D0'), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ MyTextView( _vm.state.lowestFloatingRate, textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 30, ), MyTextView( "Lowest Floating Rate", textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 14, textAlign: TextAlign.center, ), ] ) ), Container( width: 105, height: 105, padding: const EdgeInsets.all(5), color: ColorUtils.string2Color('#4161D0'), margin: const EdgeInsets.only(left: 18), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ MyTextView( _vm.state.lowestFixedRate, textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 30, ), MyTextView( "Lowest Floating Rate", textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 14, textAlign: TextAlign.center, ), ] ) ), ], ), ), ], ), ), MyTextView( "Check out what others are offering:", textColor: ColorUtils.string2Color('#FEFEFE'), fontSize: 15, boxWidth: double.infinity, boxHeight: 40.5, alignment: Alignment.center, textAlign: TextAlign.center, backgroundColor: ColorUtils.string2Color('#4161D0'), ), const SizedBox(height: 20), Row( mainAxisAlignment: MainAxisAlignment.start, children: [ MyLoadImage( Assets.propertyAdvicePic, width: 132, // height: 122.5, ), Expanded( child: Container( // color: Colors.red, padding: const EdgeInsets.only(left: 50,right: 20), child: Column( // mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ MyTextView( "Floating", textColor: ColorUtils.string2Color('#000000'), fontSize: 14, textAlign: TextAlign.center, ), MyTextView( "Fixed", textColor: ColorUtils.string2Color('#000000'), fontSize: 14, textAlign: TextAlign.center, marginLeft: 50.5, ), ], ), // const SizedBox(height: 10), Expanded(child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ MyTextView( "3.08%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 15, ), MyTextView( "2.50%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 50.5, ), ], ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ MyTextView( "3.08%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 15, ), MyTextView( "2.50%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 50.5, ), ], ).marginOnly(top: 15), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ MyTextView( "3.08%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 15, ), MyTextView( "2.50%", textColor: ColorUtils.string2Color('#000000'), fontSize: 16, textAlign: TextAlign.center, isFontMedium: true, marginLeft: 47.5, ), ], ).marginOnly(top: 15), ], )) ], ), ), ), ], ).constrained(height: 160), ], ); } Widget _buildContentMiddleTextSection(BuildContext context,WidgetRef ref, _vm) { return Column( children: [ MyTextView( "The right advice to help you choose the best package in the market!", textColor: ColorUtils.string2Color('#000000'), fontSize: 18, isFontMedium: true, marginTop: 20, marginBottom: 20, textAlign: TextAlign.center, ), MyTextView( "-No Hidden Fees, We Are Out ToHelp You!-Interest Savings With Lowest RatesGuarantee-One-Stop Access to All The BanksPackages", textColor: ColorUtils.string2Color('#000000'), fontSize: 15, textAlign: TextAlign.center, marginBottom: 20, ), ], ); } Widget _buildContentOfferSection(BuildContext context,WidgetRef ref, _vm) { final offerTextInfoList = _vm.state.offerTextInfoList.map((value) => value).toList(); return Container( width: double.infinity, child: Column( children: [ MyTextView( "What do we offer?", textColor: ColorUtils.string2Color('#000000'), fontSize: 18, isFontMedium: true, marginTop: 16.5, marginBottom: 16.5, ), Wrap( children: List.generate(offerTextInfoList.length, (index){ return Container( width: MediaQuery.of(context).size.width / 2 - 100, margin: const EdgeInsets.only(right: 15,bottom: 15), padding: const EdgeInsets.only(left: 15,right: 15,top:15,bottom:15,), // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(10), // color: ColorUtils.string2Color('#F5F5F5'), // ), child: Column( children: [ MyLoadImage( offerTextInfoList[index]["icon"], width: offerTextInfoList[index]["iconWidth"], height: offerTextInfoList[index]["iconHeight"], ), const SizedBox(height: 13,), MyTextView( offerTextInfoList[index]["title"], fontSize: 15, textColor: ColorUtils.string2Color('#000000'), textAlign: TextAlign.center, ), ] ), ); }), ), ] ), ); } Widget _buildContentBottomPartnersSection(BuildContext context,WidgetRef ref, _vm) { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ MyTextView( "Our Partners", textColor: ColorUtils.string2Color('#000000'), fontSize: 18, isFontMedium: true, marginBottom: 16.5, ), MyLoadImage(Assets.propertyOurPartners,), ], ); } Widget _buildCotentBox(BuildContext context,WidgetRef ref, _vm) { return Column( children: [ _buildContentTopAdviceSection(context, ref, _vm), const SizedBox(height: 15,), _buildContentMiddleTextSection(context, ref, _vm), const SizedBox(height: 15,), _buildContentOfferSection(context, ref, _vm), const SizedBox(height: 15,), _buildContentBottomPartnersSection(context, ref, _vm), ], ); } @override Widget build(BuildContext context, WidgetRef ref) { final _vm = ref.read(propertyIoanVmProvider.notifier); return Scaffold( backgroundColor: ColorUtils.string2Color("#F2F3F6"), // appBar: AppBar(title: Text("资产")), body: Column( children: [ Expanded( child: SingleChildScrollView( scrollDirection: Axis.vertical, physics: const BouncingScrollPhysics(), clipBehavior: Clip.none, child: Padding( padding: const EdgeInsets.only(left: 15,right: 15,top: 15), child: _buildCotentBox(context, ref, _vm), ) ) ), Container( height: 50, color: ColorUtils.string2Color('#4161D0'), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ // MyLoadImage(Assets.propertyIoanItemBg,width: 60,height: 50,), const SizedBox(width: 10,), MyTextView( "Request a Quote", fontSize: 16, textColor: Colors.white, ), ], ), ).onTap((){ _vm.handlerRequestQuote(context); }) ], ), ); } }