fix:优化使用常用技术框架
This commit is contained in:
+63
-21
@@ -1,32 +1,78 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
||||
import '../data/api/report_data_source.dart';
|
||||
import '../data/models/models.dart';
|
||||
import '../features/detail/report_detail_page.dart';
|
||||
import '../features/institutions/institution_detail_page.dart';
|
||||
import '../widgets/mini_player.dart';
|
||||
|
||||
abstract final class AppRoutes {
|
||||
static const home = '/';
|
||||
static const reports = '/reports';
|
||||
static const institutions = '/institutions';
|
||||
static const listen = '/listen';
|
||||
static const profile = '/profile';
|
||||
static const reportDetail = '/reports/:id';
|
||||
static const institutionDetail = '/institutions/:id';
|
||||
|
||||
static String reportDetailPath(String id) => '/reports/$id';
|
||||
static String institutionDetailPath(String id) => '/institutions/$id';
|
||||
}
|
||||
|
||||
class ReportDetailRouteArgs {
|
||||
const ReportDetailRouteArgs({
|
||||
required this.dataSource,
|
||||
required this.player,
|
||||
required this.onStartAudio,
|
||||
required this.onToggleAudio,
|
||||
required this.onSeekAudio,
|
||||
required this.onSpeed,
|
||||
});
|
||||
|
||||
final ReportDataSource dataSource;
|
||||
final PlayerStateModel player;
|
||||
final void Function(
|
||||
String audioId,
|
||||
String reportId,
|
||||
String title,
|
||||
int durationSec,
|
||||
)?
|
||||
onStartAudio;
|
||||
final VoidCallback? onToggleAudio;
|
||||
final void Function(int delta)? onSeekAudio;
|
||||
final VoidCallback? onSpeed;
|
||||
}
|
||||
|
||||
class InstitutionDetailRouteArgs {
|
||||
const InstitutionDetailRouteArgs({required this.dataSource});
|
||||
|
||||
final ReportDataSource dataSource;
|
||||
}
|
||||
|
||||
void openReportDetail(
|
||||
BuildContext context,
|
||||
ReportDataSource dataSource,
|
||||
ReportCardModel report, {
|
||||
PlayerStateModel player = const PlayerStateModel(),
|
||||
void Function(String audioId, String reportId, String title, int durationSec)? onStartAudio,
|
||||
void Function(
|
||||
String audioId,
|
||||
String reportId,
|
||||
String title,
|
||||
int durationSec,
|
||||
)?
|
||||
onStartAudio,
|
||||
VoidCallback? onToggleAudio,
|
||||
void Function(int delta)? onSeekAudio,
|
||||
VoidCallback? onSpeed,
|
||||
}) {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (_) => ReportDetailPage(
|
||||
reportId: report.id,
|
||||
dataSource: dataSource,
|
||||
player: player,
|
||||
onStartAudio: onStartAudio,
|
||||
onToggleAudio: onToggleAudio,
|
||||
onSeekAudio: onSeekAudio,
|
||||
onSpeed: onSpeed,
|
||||
),
|
||||
context.push(
|
||||
AppRoutes.reportDetailPath(report.id),
|
||||
extra: ReportDetailRouteArgs(
|
||||
dataSource: dataSource,
|
||||
player: player,
|
||||
onStartAudio: onStartAudio,
|
||||
onToggleAudio: onToggleAudio,
|
||||
onSeekAudio: onSeekAudio,
|
||||
onSpeed: onSpeed,
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -36,12 +82,8 @@ void openInstitutionDetail(
|
||||
ReportDataSource dataSource,
|
||||
String institutionId,
|
||||
) {
|
||||
Navigator.of(context).push(
|
||||
MaterialPageRoute(
|
||||
builder: (_) => InstitutionDetailPage(
|
||||
institutionId: institutionId,
|
||||
dataSource: dataSource,
|
||||
),
|
||||
),
|
||||
context.push(
|
||||
AppRoutes.institutionDetailPath(institutionId),
|
||||
extra: InstitutionDetailRouteArgs(dataSource: dataSource),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user