Skip to content

Instantly share code, notes, and snippets.

View MelbourneDeveloper's full-sized avatar
🏠
Working from home

Christian Findlay MelbourneDeveloper

🏠
Working from home
View GitHub Profile
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Last active February 17, 2025 21:52
Font Contrast Issue
import 'package:flutter/material.dart';
ThemeData getLightTheme() => ThemeData(
brightness: Brightness.light,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
brightness: Brightness.light,
),
);
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Last active January 9, 2025 10:38
Forward Piping with Rotating Animation
// ignore_for_file: unreachable_from_main
import 'dart:math';
import 'package:flutter/material.dart';
extension ForwardPipeOperator<T extends Widget, T2 extends Widget> on T
Function(Widget) {
/// Returns a new function that applies the given transformation to the result
/// of this function
T Function(T2) operator |(Widget Function(Widget) next) =>
@MelbourneDeveloper
MelbourneDeveloper / get_contributors.sh
Created September 27, 2024 09:56
Get Contributors
#!/bin/bash
contributor_data=$(curl -s -H "Accept: application/vnd.github.v3+json" \
"https://api.github.com/repos/Nimblesite/nimble_charts/commits?since=$(date -v-3m +%Y-%m-%dT%H:%M:%SZ)&per_page=100" | \
jq -r '.[] | select(.author != null) | "\(.author.login) \(.author.avatar_url)"' |
sort | uniq -c | sort -rn |
awk '{printf "%s %s %s\n", $2, $3, $1}')
echo "| Avatar | Username | Commits |"
echo "|--------|----------|---------|"
@MelbourneDeveloper
MelbourneDeveloper / late_future.dart
Created August 24, 2024 09:06
LateFuture - A Monad Type Thing That Doesn't Need The late Keyword
import 'package:flutter/material.dart';
import 'package:nadz/nadz.dart';
typedef LateBuildContextFuture<T, T3> = LateFuture<T, BuildContext, T3>;
class LateFuture<T, T2, E> {
LateFuture(
this.getFuture,
this.onError, {
this.duration = const Duration(milliseconds: 1),
@MelbourneDeveloper
MelbourneDeveloper / .editorconfig
Last active January 31, 2024 22:43
Directory.Build.props Enable All Errors
[*.{cs,vb}]
dotnet_diagnostic.CA1062.severity = none
# IDE0022: Use block body for method
csharp_style_expression_bodied_methods = true
# IDE0032: Use auto property
dotnet_style_prefer_auto_properties = true
#CSharpier Incompatible Rules
@MelbourneDeveloper
MelbourneDeveloper / mostchanged.sh
Created December 20, 2023 09:17
Get Most Changed Files
#!/bin/bash
# This script finds the files with the most changes in a Git repository, tracking renames and excluding binary files and files with zero changes
# Check for the presence of a Git repository
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
echo "This script must be run inside a Git repository."
exit 1
fi
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Created November 30, 2023 02:03
Rx Example - Riverpod
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
void main() => runApp(const ProviderScope(child: MyApp()));
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) => const MaterialApp(
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Created November 30, 2023 01:58
Rx Example - RxDart
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) => const MaterialApp(
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Last active November 29, 2023 23:59
Rx Example - ChangeNotifier
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) => const MaterialApp(
debugShowCheckedModeBanner: false,
@MelbourneDeveloper
MelbourneDeveloper / main.dart
Created November 29, 2023 23:54
Rx Example - ValueNotifier
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) => const MaterialApp(
debugShowCheckedModeBanner: false,