Skip to content

Instantly share code, notes, and snippets.

View hawkkiller's full-sized avatar
🎯
Focusing

Michael Lazebny hawkkiller

🎯
Focusing
View GitHub Profile
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
class AnimatedEdgeSlide extends SingleChildRenderObjectWidget {
const AnimatedEdgeSlide({
required Widget super.child,
required this.positionAnimation,
super.key,
});
@hawkkiller
hawkkiller / badge.dart
Created May 20, 2024 14:11
Dead simple badge using custom single child layout
class RecommendedBadge extends StatelessWidget {
const RecommendedBadge({super.key});
@override
Widget build(BuildContext context) => DecoratedBox(
decoration: BoxDecoration(
color: Colors.of(context).tertiary,
borderRadius: BorderRadius.circular(4),
),
child: Padding(
@hawkkiller
hawkkiller / good_forms.dart
Last active February 9, 2024 13:56
Forms that support async validation
import 'dart:async';
import 'package:flutter/material.dart';
typedef ValueBuilder<T> = Widget Function(BuildContext context, T value);
class GoodForm extends StatefulWidget {
const GoodForm({
required this.builder,
super.key,
@hawkkiller
hawkkiller / main.dart
Created January 25, 2024 16:57
Async validation
import 'dart:async';
import 'package:flutter/material.dart';
void main() {
runApp(const MainApp());
}
class UsernameValidator {
final UserRepository _userRepository;
import 'dart:convert';
void main() {
final johnJson = '{"name": "John Doe"}';
final john = getUser(johnJson);
final wrongJson = '{"name": "John Doe}';
// this raises FormatException
void main() {
try {
loadPage();
} catch (e, stackTrace) {
print('Stack Trace: $stackTrace');
}
}
void loadPage() {
loadHeader();
void main() {
try {
loadPage();
} catch (e, stackTrace) {
print('Stack Trace: $stackTrace');
}
}
void loadPage() {
loadHeader();
@hawkkiller
hawkkiller / main.dart
Last active January 21, 2024 15:14
Error-handling example #1
void main() {
try {
sendPost();
// on without catch clause
} on LackOfPrivilegesException {
print("You don't have enough privileges.");
// on with catch clause
} on ValidationException catch (e) {
print('Please verify entered fields: ${e.fields}');
// general catch clause
@hawkkiller
hawkkiller / main.dart
Last active March 20, 2024 13:31
Full code for app that uses Popup
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:popups_showcase/popup.dart';
void main() {
runApp(const MainApp());
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
@hawkkiller
hawkkiller / popup.dart
Last active December 11, 2023 13:57
A widget that shows a popup relative to a target widget.
import 'package:flutter/material.dart';
/// A widget that shows a popup relative to a target widget.
///
/// The popup is declaratively shown/hidden using an [OverlayPortalController].
///
/// It is positioned relative to the target widget using the [followerAnchor] and [targetAnchor] properties.
class Popup extends StatefulWidget {
const Popup({
required this.child,