Skip to content

Instantly share code, notes, and snippets.

View craiglabenz's full-sized avatar

Craig Labenz craiglabenz

View GitHub Profile
@craiglabenz
craiglabenz / chat_message_render_box.dart
Last active April 27, 2024 15:27
Demonstrates a custom RenderObject that draws chat messages like WhatsApp, where the `sentAt` timestamp is tucked into the last line if it fits
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
@craiglabenz
craiglabenz / text_style_demo.dart
Last active August 4, 2022 14:37
TextStyle basic usage
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
@craiglabenz
craiglabenz / dart-enum-pattern-matching.dart
Created June 13, 2022 18:50
Demonstrates pattern matching with Dart 2.17 enums
enum Key {
key1('key1'),
key2('key2');
final String value;
const Key(this.value);
T mapFor<T>({
required T Function() key1,
@craiglabenz
craiglabenz / main.dart
Last active February 21, 2024 23:08
Simple pong client
import 'dart:math';
import 'package:flame/collisions.dart';
import 'package:flame/components.dart';
import 'package:flame/game.dart';
import 'package:flame/input.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
/* Instructions */
@craiglabenz
craiglabenz / implicit_color.dart
Last active May 16, 2022 16:26
Demonstrates how ImplicitlyAnimatedWidgets (might) work
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
final colors = [Colors.red, Colors.blue];
void main() {
runApp(MyApp());
}
@craiglabenz
craiglabenz / models.py
Last active May 8, 2022 15:36
Demonstrates how I connect Models, Managers, and QuerySets, with explanations and open questions for improvement
from django.db import models
class MyModelManager(models.Manager):
# A few notes here:
#
# 1. I add this method for its type-hinted return type. This allows me to
# later write "MyModel.objects.for_user(user=user).some_other_queryset_method()"
# and have the linter agree with me that it will work.
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
@craiglabenz
craiglabenz / material-state-properties.dart
Last active March 23, 2022 19:54
Demonstrates use of MaterialStateProperty API
import 'package:flutter/material.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
@craiglabenz
craiglabenz / repaint_boundary.dart
Created February 25, 2022 18:05
Demonstrates the use of RepaintBoundary
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
const Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
// Setting this is the same as enabling the feature in your IDE.
debugRepaintRainbowEnabled = true;
runApp(const MyApp());
@craiglabenz
craiglabenz / stale_buildcontext.dart
Created February 22, 2022 20:20
Demonstrates how use of the wrong BuildContext can yield unexpected results
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override