import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:tone_snap/components/keep_alive_wrapper.dart'; import 'package:tone_snap/generated/assets.dart'; import 'package:tone_snap/modules/sideb/initial/initial_controller.dart'; class InitialView extends StatelessWidget { InitialView({super.key}); final controller = Get.find(); @override Widget build(BuildContext context) { double bottomPadding = MediaQuery.of(context).padding.bottom; return Stack( children: [ Image.asset( Assets.sideBHomeBg, width: 1.sw, fit: BoxFit.fitWidth, ), Scaffold( backgroundColor: Colors.transparent, body: PageView( physics: const NeverScrollableScrollPhysics(), controller: controller.pageController, children: controller.pages.map((e) => KeepAliveWrapper(child: e.widget)).toList(), ), bottomNavigationBar: _buildBottomAppBar(bottomPadding), ), // _buildPlayerBar(bottomPadding), ], ); } Widget _buildBottomAppBar(double bottomPadding) { return Container( height: 72.h + bottomPadding, padding: EdgeInsets.only(bottom: bottomPadding), decoration: BoxDecoration( borderRadius: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r)), image: const DecorationImage( image: AssetImage(Assets.sideBBnbBg), fit: BoxFit.fill, ), ), child: Row( children: controller.pages.asMap().entries.map((e) { return Expanded( child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () => controller.onBottomAppBarItemChanged(e.key), child: SizedBox( height: double.infinity, child: FittedBox( fit: BoxFit.none, child: Obx(() { return Visibility( visible: controller.currentIndex.value == e.key, replacement: Image.asset( e.value.icons[0], width: 28.w, height: 28.w, ), child: Image.asset( e.value.icons[1], width: 36.w, height: 36.w, gaplessPlayback: true, ), ); }), ), ), ), ); }).toList(), ), ); } Widget _buildPlayerBar(double bottomPadding) { return Positioned( bottom: 65.5.h + bottomPadding, left: 16.w, right: 16.w, child: Container( width: 1.sw, height: 75.5.h, decoration: BoxDecoration( color: const Color(0xFF80F988), borderRadius: BorderRadius.circular(36).r, boxShadow: const [ BoxShadow( color: Color(0x40040604), offset: Offset(0, 4), blurRadius: 4, spreadRadius: 0, ), ], ), ), ); } }