fix:对比原型增加功能交互

This commit is contained in:
jingyun
2026-06-07 10:58:05 +08:00
parent af865b13fb
commit ac794ae58a
21 changed files with 1342 additions and 233 deletions
+59 -22
View File
@@ -122,47 +122,84 @@ final routerProvider = Provider<GoRouter>((ref) {
),
GoRoute(
path: AppRoutes.reportDetail,
builder: (context, state) {
pageBuilder: (context, state) {
final id = state.pathParameters['id'] ?? '';
final args = state.extra as ReportDetailRouteArgs?;
return Consumer(
builder: (context, ref, _) {
final player = ref.watch(audioPlayerControllerProvider);
final controller = ref.read(
audioPlayerControllerProvider.notifier,
);
return ReportDetailPage(
reportId: id,
dataSource: args?.dataSource ?? dataSource,
player: player,
onStartAudio: args?.onStartAudio ?? controller.startModuleAudio,
onToggleAudio: args?.onToggleAudio ?? controller.toggleAudio,
onSeekAudio: args?.onSeekAudio ?? controller.seekAudio,
onSpeed: args?.onSpeed ?? controller.cycleSpeed,
);
},
return _slidePage(
state: state,
child: Consumer(
builder: (context, ref, _) {
final player = ref.watch(audioPlayerControllerProvider);
final controller = ref.read(
audioPlayerControllerProvider.notifier,
);
return ReportDetailPage(
reportId: id,
dataSource: args?.dataSource ?? dataSource,
player: player,
onStartAudio:
args?.onStartAudio ?? controller.startModuleAudio,
onToggleAudio: args?.onToggleAudio ?? controller.toggleAudio,
onSeekAudio: args?.onSeekAudio ?? controller.seekAudio,
onSpeed: args?.onSpeed ?? controller.cycleSpeed,
);
},
),
);
},
),
GoRoute(
path: AppRoutes.institutionDetail,
builder: (context, state) {
pageBuilder: (context, state) {
final id = state.pathParameters['id'] ?? '';
final args = state.extra as InstitutionDetailRouteArgs?;
return InstitutionDetailPage(
institutionId: id,
dataSource: args?.dataSource ?? dataSource,
return _slidePage(
state: state,
child: InstitutionDetailPage(
institutionId: id,
dataSource: args?.dataSource ?? dataSource,
),
);
},
),
GoRoute(
path: AppRoutes.settings,
builder: (context, state) => const SettingsPage(),
pageBuilder: (context, state) =>
_slidePage(state: state, child: const SettingsPage()),
),
],
);
});
CustomTransitionPage<void> _slidePage({
required GoRouterState state,
required Widget child,
}) {
return CustomTransitionPage<void>(
key: state.pageKey,
transitionDuration: const Duration(milliseconds: 260),
reverseTransitionDuration: const Duration(milliseconds: 220),
child: child,
transitionsBuilder: (context, animation, secondaryAnimation, child) {
final curved = CurvedAnimation(
parent: animation,
curve: Curves.easeOutCubic,
reverseCurve: Curves.easeInCubic,
);
return FadeTransition(
opacity: curved,
child: SlideTransition(
position: Tween<Offset>(
begin: const Offset(0.08, 0),
end: Offset.zero,
).animate(curved),
child: child,
),
);
},
);
}
class _TabSurface extends StatelessWidget {
const _TabSurface({required this.child});