fix:对比原型增加功能交互
This commit is contained in:
+59
-22
@@ -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});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user