Skip to content

Instantly share code, notes, and snippets.

View definev's full-sized avatar
💙
Fluttering

Bui Dai Duong definev

💙
Fluttering
View GitHub Profile
@definev
definev / tab_layout_example.dart
Last active December 29, 2025 10:58
Minimal example for tab layout
/// A minimal example demonstrating how to create a Tab-based navigation using ZenRouter.
///
/// Key concepts:
/// - [TabLayoutCoordinator]: Manages the routing state, specifically the [IndexedStackPath] for tabs.
/// - [TabLayout]: A [RouteLayout] that provides the UI structure (e.g., [BottomNavigationBar]) for its children.
/// - [IndexedStackPath]: Maintains the state of each tab, allowing for preservation of state when switching tabs.
///
/// To run this example:
/// 1. Fix imports if necessary.
/// 2. Run the `main()` function defined at the bottom of this file.
@definev
definev / main_restoration.dart
Last active December 24, 2025 11:24
An example to show how to enable Restoration in ZenRouter with only ONE line of code :-) (Require zenrouter v0.5.0)
import 'package:flutter/material.dart';
import 'package:zenrouter/zenrouter.dart';
abstract class AppRoute extends RouteTarget with RouteUnique {}
class Home extends AppRoute {
@override
Uri toUri() => Uri.parse('/');
@override
@definev
definev / two_panel_example.dart
Created December 23, 2025 02:10
How to build 2-panel layout and able to correct URL reflection
import 'package:flutter/material.dart';
import 'package:zenrouter/zenrouter.dart';
import 'package:zenrouter_devtools/zenrouter_devtools.dart';
void main() {
runApp(MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@definev
definev / main.dart
Last active December 22, 2025 15:35
Initial loading splash screen in ZenRouter
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:zenrouter/zenrouter.dart';
import 'package:zenrouter_devtools/zenrouter_devtools.dart';
bool loggedIn = false;
bool loaded = false;
Future<bool> _authCheck() async {
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint
import 'package:zenrouter/zenrouter.dart';
import '(auth)/_layout.dart';
import '(auth)/login.dart' deferred as auth_login;
import '(auth)/register.dart' deferred as auth_register;
import 'about.dart' deferred as about;
import 'index.dart' deferred as index;
@definev
definev / swiftui_navigation.dart
Last active November 27, 2025 06:51
Complete cloned with same feature set as NavigationStack like SwiftUI in Flutter, using Navigator Page API
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; // For kIsWeb
// ==============================================================================
// 1. THE MICRO-FRAMEWORK (Copy this to your core library)
// ==============================================================================
/// A state object representing the active path of the navigation.
/// Acts as the "Source of Truth" for the navigation stack.
@definev
definev / crt.dart
Last active December 6, 2025 16:25
CRT Effect for Flutter
import 'dart:math';
import 'package:flutter/material.dart';
class CrtScreen extends StatefulWidget {
final Widget child;
final double scanlineGap;
final double scanlineThickness;
final double verticalLineGap;
final double horizontalShakeRange;
@definev
definev / motor_extension_api.dart
Last active October 10, 2025 13:46
The proposal extension API for motor package
import 'package:flutter/widgets.dart';
import 'package:motor/motor.dart';
class MotionArgument<T> {
const MotionArgument(
this.value,
this.converter, [
this.motion = const .bouncySpring(),
]);
@definev
definev / main.dart
Last active September 25, 2025 15:14
ColoredBox unwanted strip example and fixed
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@definev
definev / shader.glsl
Created July 1, 2023 04:44
Piet Mondrian painting.
// Author: Bui Dai Duong (@definev)
// Title: Piet Mondrian
#ifdef GL_ES
precision mediump float;
#endif
uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_time;