poem_router.dart 3.53 KB
import 'package:fluro/fluro.dart';
import 'package:Parlando/poem/page/poem_record_audio.dart';
import 'package:Parlando/poem/page/poem_search_page.dart';
import 'package:Parlando/routers/i_router.dart';
import 'page/poem_complete_page.dart';
import 'page/poem_detail.dart';
import 'page/poem_page.dart';
import 'page/poem_publish.dart';
import 'page/poem_record_video.dart';
import 'page/poem_video_player.dart';
import 'page/select_address_page.dart';

class PoemRouter implements IRouterProvider {
  static String poemPage = '/poem';
  static String poemDetailPage = '/detail';
  static String poemRecordAudioPage = '/poem/record/audio';
  static String poemRecordVideoPage = '/poem/record/video';
  static String poemVideoPlayer = '/poem/video/player';
  static String poemPublish = '/poem/publish';
  static String poemCompletePage = '/poem/complete';
  static String poemSearchPage = '/poem/search';
  static String addressSelectPage = '/poem/address/select';

  @override
  void initRouter(FluroRouter router) {
    router.define(
      poemPage,
      handler: Handler(
        handlerFunc: (_, __) => const PoemPage(),
      ),
    );

    router.define(addressSelectPage,
        handler: Handler(handlerFunc: (_, __) => const AddressSelectPage()));

    router.define(
      poemDetailPage,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? id = params['id']?.first;
          return PoemDetailPage(
            poemId: int.parse(id!),
          );
        },
      ),
    );

    router.define(
      poemRecordAudioPage,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? id = params['id']?.first;
          return PoemRecordAudioPage(
            poemId: int.parse(id!),
          );
        },
      ),
    );

    router.define(
      poemRecordVideoPage,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? id = params['id']?.first;
          int? poem = int.parse(params['poem']!.first);
          String? type = params['type']?.first;
          return PoemRecordVideoPage(
            id: int.parse(id!),
            type: int.parse(type!),
            poemId: poem,
          );
        },
      ),
    );

    router.define(
      poemVideoPlayer,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? url = params['url']?.first;
          String? id = params['id']?.first;
          String? type = params['type']?.first;
          int? poem = int.parse(params['poemId']!.first);
          return PoemVideoPlayer(
            url: url!,
            id: int.parse(id!),
            type: int.parse(type!),
            poemId: poem,
          );
        },
      ),
    );
    router.define(
      poemPublish,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? data = params['data']?.first;
          String? id = params['id']?.first;
          String? type = params['type']?.first;
          return PoemPublish(
            data: data!,
            id: int.parse(id!),
            type: int.parse(type!),
          );
        },
      ),
    );

    router.define(
      poemCompletePage,
      handler: Handler(
        handlerFunc: (_, Map<String, List<String>> params) {
          String? data = params['id']?.first;
          return PoemCompletePage(
            data: data!,
          );
        },
      ),
    );

    router.define(poemSearchPage,
        handler: Handler(handlerFunc: (_, __) => const PoemSearchPage()));
  }
}