Skip to content

Commit 21df36e

Browse files
committed
feat: add custom page transition builder for instant transitions in RgbGlitchDemo
1 parent 0a786be commit 21df36e

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

lib/main.dart

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter/foundation.dart';
12
import 'package:flutter/material.dart';
23
import 'package:url_launcher/url_launcher.dart';
34

@@ -80,6 +81,22 @@ final shaders = [
8081
),
8182
];
8283

84+
// Custom page transition builder that provides no animation (instant transition)
85+
class _NoTransitionPageTransitionsBuilder extends PageTransitionsBuilder {
86+
const _NoTransitionPageTransitionsBuilder();
87+
88+
@override
89+
Widget buildTransitions<T extends Object?>(
90+
PageRoute<T> route,
91+
BuildContext context,
92+
Animation<double> animation,
93+
Animation<double> secondaryAnimation,
94+
Widget child,
95+
) {
96+
return child;
97+
}
98+
}
99+
83100
class RgbGlitchDemo extends StatefulWidget {
84101
const RgbGlitchDemo({super.key});
85102

@@ -92,7 +109,19 @@ class _RgbGlitchDemoState extends State<RgbGlitchDemo> {
92109
Widget build(BuildContext context) {
93110
return MaterialApp(
94111
debugShowCheckedModeBanner: false,
95-
theme: ThemeData.dark(useMaterial3: true),
112+
theme: ThemeData.dark(useMaterial3: true).copyWith(
113+
pageTransitionsTheme: kIsWeb
114+
? PageTransitionsTheme(
115+
builders: {
116+
TargetPlatform.android: const _NoTransitionPageTransitionsBuilder(),
117+
TargetPlatform.iOS: const _NoTransitionPageTransitionsBuilder(),
118+
TargetPlatform.linux: const _NoTransitionPageTransitionsBuilder(),
119+
TargetPlatform.macOS: const _NoTransitionPageTransitionsBuilder(),
120+
TargetPlatform.windows: const _NoTransitionPageTransitionsBuilder(),
121+
},
122+
)
123+
: null,
124+
),
96125
home: const HomeScreen(),
97126
);
98127
}

0 commit comments

Comments
 (0)