import 'package:fluro/fluro.dart' as fluro;
import 'package:flutter/material.dart';
import 'package:yumi/app/routes/sc_router_init.dart';
import 'package:yumi/modules/country/country_route.dart';
import 'package:yumi/modules/index/main_route.dart';
import 'package:yumi/modules/chat/chat_route.dart';
import 'package:yumi/modules/store/store_route.dart';
import 'package:yumi/modules/index/index_page.dart';
import 'package:yumi/modules/user/settings/settings_route.dart';
import 'package:yumi/modules/wallet/wallet_route.dart';
import 'package:yumi/modules/auth/login_route.dart';
import 'package:yumi/modules/room/voice_room_route.dart';
import 'package:yumi/app/routes/sc_404_page.dart';

class SCRoutes {
  static String home = '/';

  static List<SCIRouterProvider> _listRouter = [];

  static void configureRoutes(fluro.FluroRouter router) {
    /// 指定路由跳转错误返回页
    router.notFoundHandler = fluro.Handler(handlerFunc: (BuildContext? context, Map<String, List<String>> params) {
      debugPrint('未找到目标页');
      return SCWidgetNotFound();
    });

    router.define(home,
        handler: fluro.Handler(handlerFunc: (BuildContext? context, Map<String, List<String>> params) => SCIndexPage()));

    _listRouter.clear();

    /// 各自路由由各自模块管理，统一在此添加初始化

    /// 登陆路由组
    _listRouter.add(LoginRouter());
    _listRouter.add(CountryRoute());
    _listRouter.add(SettingsRoute());
    _listRouter.add(VoiceRoomRoute());
    _listRouter.add(SCMainRoute());
    _listRouter.add(WalletRoute());
    _listRouter.add(StoreRoute());
    _listRouter.add(SCChatRouter());

    /// 初始化路由
    for (var routerProvider in _listRouter) {
      routerProvider.initRouter(router);
    }
  }
}

// PS：路由使用方法

//  1、不需要传参的 替换所有历史记录
/// SCNavigatorUtils.push(context, LoginRouter.loginPage, replace: true);
/// 2、不需要传参的 不替换历史记录
/// SCNavigatorUtils.push(context, LoginRouter.loginPage, replace: false);

//  需要传参的
//  3、SCNavigatorUtils.push(context,'${SCRoutes.webViewPage}?param1=${Uri.encodeComponent(content1)}&param2=${Uri.encodeComponent(content2)}', replace: true);
//  4、SCNavigatorUtils.push(context, '${MarketRouter.hotCoin}?id=xxxxxxx');

// 有返回值跳转
/// 5、SCNavigatorUtils.pushResult(context, MarketRouter.hotCoin, (result){
//   setState(() {
//     //result是返回的结果
//     TestModel model = result;
//     _name = model.name;
//   });
// });

// 返回上一级
// 6、SCNavigatorUtils.goBack(context);

// 带参数返回上一级
// 7、SCNavigatorUtils.goBackWithParams(context, result);
