Skip to content

Instantly share code, notes, and snippets.

View clragon's full-sized avatar

clragon

View GitHub Profile
@clragon
clragon / e621_comment_hammer_and_wrench.user.js
Last active October 22, 2025 23:16
Portable Areal Combustion Kit for e6: A weapon to surpass metal gear.
// ==UserScript==
// @name 6 P.A.C.K.
// @namespace http://tampermonkey.net/
// @version 3.1
// @description Portable Areal Combustion Kit for e6: A weapon to surpass metal gear.
// @author binaryfloof
// @icon https://em-content.zobj.net/source/microsoft-teams/400/firecracker_1f9e8.png
// @supportURL https://gist.github.com/clragon/d833e65ef3d92b97d9ca7e741d6949fd
// @updateURL https://gist.githubusercontent.com/clragon/d833e65ef3d92b97d9ca7e741d6949fd/raw/e621_comment_hammer_and_wrench.user.js
// @downloadURL https://gist.githubusercontent.com/clragon/d833e65ef3d92b97d9ca7e741d6949fd/raw/e621_comment_hammer_and_wrench.user.js
@clragon
clragon / main.dart
Created December 11, 2023 11:45
widget swapper
import 'dart:math';
import 'package:boxy/boxy.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const App());
}
class App extends StatelessWidget {
@clragon
clragon / main.dart
Last active November 21, 2023 19:21
floating extra content
import 'dart:math';
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/material.dart';
void main() => runApp(const App());
class App extends StatelessWidget {
const App({super.key});
@clragon
clragon / main.dart
Last active November 6, 2023 17:41
Character Swapping Animation
import 'dart:math';
import 'package:flutter/material.dart';
void main() => runApp(const App());
class App extends StatelessWidget {
const App({super.key});
@override
@clragon
clragon / update.sh
Last active September 11, 2023 23:33
auto release download bash
#!/bin/sh
# Exit if no arguments are provided
if [ "$#" -lt 1 ]; then
echo "Usage: $0 <owner/repo> [command]"
exit 1
fi
# GitHub repository to download release from
REPO=$1
@clragon
clragon / main.dart
Created August 26, 2023 02:10
navgiator & overlay proxy
import 'package:flutter/material.dart';
import 'proxy.dart';
/// [BottomNavigationBar] has a weird assert that checks for [Overlay].
/// Proxies do not work with that. This test can only run properly in release mode.
void main() => runApp(const App());
class App extends StatelessWidget {
const App({super.key});
@clragon
clragon / printout.dart
Last active July 16, 2023 23:40
Allows capturing image snapshots of arbitrary child widgets
import 'dart:async';
import 'dart:typed_data';
import 'package:flutter/rendering.dart';
import 'package:flutter/widgets.dart';
import 'dart:ui' as ui;
/// A controller for a [PrintoutFrame].
///
/// Allows capturing the rendered image of the child widget.
@clragon
clragon / animated_indexed_stack.dart
Last active July 16, 2023 23:41
Allows animating between stacked children while keeping their state alive
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
/// An internal representation of a child widget subtree that is a child of
/// the [AnimatedIndexedStack].
///
/// This keeps track of animation controllers, keys, and the child widget.
class _ChildEntry {
_ChildEntry({
required this.key,
@clragon
clragon / selective_provider.dart
Created July 11, 2022 18:17
Allows to create Providers that depend on other Providers or their Properties
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:provider/single_child_widget.dart';
typedef SelectiveProviderBuilder0<R> = R Function(BuildContext context);
typedef SelectiveProviderBuilder<T, R> = R Function(
BuildContext context,
T value,
@clragon
clragon / provider_dependencies.dart
Created January 30, 2022 01:33
Allows to create ProxyProviders that only recreate their Provider when a dependency changes
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
typedef GuardedProviderBuilder<T, R> = R Function(
BuildContext context,
T value,
);
typedef GuardedProviderBuilder2<T, T2, R> = R Function(