import 'dart:io'; import 'package:fluro/fluro.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:yumi/modules/room/background/room_background_select_page.dart'; import 'package:yumi/modules/room/background/room_background_upload_page.dart'; import 'package:yumi/modules/room/edit/room_edit_page.dart'; import 'package:yumi/modules/room/them/room_theme_page.dart'; import 'package:yumi/modules/room/voice_room_page.dart'; import 'package:yumi/app/routes/sc_router_init.dart'; class VoiceRoomRoute implements SCIRouterProvider { static String voiceRoom = '/room'; static String roomEdit = '/room/roomEdit'; static String roomTheme = '/room/roomTheme'; static String roomBackgroundSelect = '/room/background/select'; static String roomBackgroundUpload = '/room/background/upload'; static Route _buildRoute(Widget page) { if (Platform.isIOS) { return CupertinoPageRoute(builder: (_) => page); } return MaterialPageRoute(builder: (_) => page); } static Future openRoomEdit( BuildContext context, { required bool needRestCurrentRoomInfo, bool rootNavigator = true, }) { return Navigator.of(context, rootNavigator: rootNavigator).push( _buildRoute( RoomEditPage( needRestCurrentRoomInfo: needRestCurrentRoomInfo ? "true" : "false", ), ), ); } static Future openRoomTheme( BuildContext context, { bool rootNavigator = false, }) { return Navigator.of( context, rootNavigator: rootNavigator, ).push(_buildRoute(RoomThemePage())); } static Future openRoomBackgroundSelect( BuildContext context, { bool rootNavigator = false, }) { return Navigator.of( context, rootNavigator: rootNavigator, ).push(_buildRoute(const RoomBackgroundSelectPage())); } static Future openRoomBackgroundUpload( BuildContext context, { bool rootNavigator = false, }) { return Navigator.of( context, rootNavigator: rootNavigator, ).push(_buildRoute(const RoomBackgroundUploadPage())); } @override void initRouter(FluroRouter router) { router.define( voiceRoom, handler: Handler(handlerFunc: (_, params) => VoiceRoomPage()), ); router.define( roomTheme, handler: Handler(handlerFunc: (_, params) => RoomThemePage()), ); router.define( roomBackgroundSelect, handler: Handler( handlerFunc: (_, params) => const RoomBackgroundSelectPage(), ), ); router.define( roomBackgroundUpload, handler: Handler( handlerFunc: (_, params) => const RoomBackgroundUploadPage(), ), ); router.define( roomEdit, handler: Handler( handlerFunc: (_, params) => RoomEditPage( needRestCurrentRoomInfo: params['need']?.first ?? "false", ), ), ); } }