Skip to content

Instantly share code, notes, and snippets.

View justinmc's full-sized avatar

Justin McCandless justinmc

View GitHub Profile
@justinmc
justinmc / main.dart
Last active April 7, 2025 20:19
Reparenting FocusNode example.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
// Modified from the FocusNode example in the docs:
// https://main-api.flutter.dev/flutter/widgets/FocusNode-class.html
void main() => runApp(const FocusNodeExampleApp());
class FocusNodeExampleApp extends StatelessWidget {
const FocusNodeExampleApp({super.key});
@justinmc
justinmc / main.dart
Created February 21, 2025 20:57
Demonstrates that SelectableText focus bugs don't happen with SelectionArea instead
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Flutter Demo',
home: Scaffold(
@justinmc
justinmc / main.dart
Created January 14, 2025 19:44
How Container can cause a loss of state lower in the tree.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
@justinmc
justinmc / main.dart
Created August 23, 2024 18:53
Coloring a known formatted text structure based on flat ranges
import 'dart:math' as math;
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@justinmc
justinmc / main.dart
Created August 8, 2024 22:50
Simple example of rich text in a TextField by overriding TextEditingController
import 'package:flutter/material.dart';
// This example shows how to format input text in a TextField using TextSpans.
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@justinmc
justinmc / main.dart
Last active August 7, 2024 21:34
Example of predictive back (root and transitions) working with Navigator 2.0
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() async {
runApp(_MyApp());
}
class _MyApp extends StatelessWidget {
_MyApp();
@justinmc
justinmc / main.dart
Last active August 7, 2024 21:35
MaterialApp.router example
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() async {
runApp(_MyApp());
}
class _MyApp extends StatelessWidget {
_MyApp();
@justinmc
justinmc / main.dart
Last active April 20, 2024 00:31
Example of conflicting horizontal gesture recognizers
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
void main() => runApp(const ExampleApp());
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
@justinmc
justinmc / main.dart
Created March 15, 2024 19:05
How to return a value from a route dismissed by system back gesture. Will break predictive back in a root route, and maybe an antipattern overall.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
@justinmc
justinmc / main.dart
Created February 23, 2024 00:58
Shows how keyboard shortcuts can interfere with text input, and how to solve that.
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});