import 'dart:async'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:aslan/chatvibe_features/room/them/custom/room_theme_custom_page.dart'; import 'package:aslan/app_localizations.dart'; import 'package:aslan/chatvibe_ui/components/appbar/chatvibe_appbar.dart'; import 'package:aslan/chatvibe_ui/components/at_compontent.dart'; import 'package:aslan/chatvibe_core/routes/at_fluro_navigator.dart'; import 'package:aslan/chatvibe_features/store/store_route.dart'; import 'package:aslan/chatvibe_features/user/my_items/theme/bags_theme_page.dart'; ///房间主题 class RoomThemePage extends StatefulWidget { @override _RoomThemePageState createState() => _RoomThemePageState(); } class _RoomThemePageState extends State with SingleTickerProviderStateMixin { late TabController _tabController; final List _pages = []; final List _tabs = []; Timer? _timer; String themePath = ""; @override void initState() { super.initState(); _pages.add( BagsThemePage((playUrl) { themePath = playUrl; setState(() {}); _timer ??= Timer.periodic(Duration(seconds: 5), (timer) { themePath = ""; setState(() {}); }); }), ); _pages.add(RoomThemeCustomPage()); _tabController = TabController(length: _pages.length, vsync: this); _tabController.addListener(() { _timer?.cancel(); setState(() { themePath = ""; }); }); // 监听切换 } @override void dispose() { super.dispose(); _timer?.cancel(); } @override Widget build(BuildContext context) { _tabs.clear(); _tabs.add(Tab(text: ATAppLocalizations.of(context)!.all)); _tabs.add(Tab(text: ATAppLocalizations.of(context)!.custom)); return Stack( children: [ themePath.isNotEmpty ? netImage( url: themePath, width: ScreenUtil().screenWidth, height: ScreenUtil().screenHeight, ) : Image.asset( "atu_images/room/at_icon_room_settig_bg.png", width: ScreenUtil().screenWidth, height: ScreenUtil().screenHeight, fit: BoxFit.fill, ), Scaffold( resizeToAvoidBottomInset: false, backgroundColor: Colors.transparent, appBar: ChatVibeStandardAppBar( backButtonColor: Colors.black, title: ATAppLocalizations.of(context)!.theme, actions: [ GestureDetector( behavior: HitTestBehavior.opaque, child: Container( padding: EdgeInsets.all(5.w), margin: EdgeInsetsDirectional.only(end: 10.w), child: Image.asset( "atu_images/store/at_icon_bag_shop.png", width: 20.w, height: 20.w, ), ), onTap: () { ATNavigatorUtils.push(context, StoreRoute.list, replace: true); }, ), ], ), body:SafeArea( top: false, child: Column( children: [ TabBar( tabAlignment: TabAlignment.center, labelPadding: EdgeInsets.symmetric(horizontal: 18.w), labelColor: Colors.black87, isScrollable: true, indicator: BoxDecoration(), unselectedLabelColor: Colors.black38, labelStyle: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w600), unselectedLabelStyle: TextStyle( fontSize: 13.sp, fontWeight: FontWeight.w500, ), indicatorColor: Colors.transparent, dividerColor: Colors.transparent, controller: _tabController, tabs: _tabs, ), Expanded( child: TabBarView(controller: _tabController, children: _pages), ), ], ),), ), ], ); } }