Skip to content

Instantly share code, notes, and snippets.

View lukepighetti's full-sized avatar
🦞

Luke Pighetti lukepighetti

🦞
View GitHub Profile
import '/features/architecture/logging.dart';
class CachedQuery<T> {
final Duration invalidation;
final Future<T> Function(String key) fn;
CachedQuery(
this.fn,
this.invalidation,
);
import 'package:flutter/material.dart';
class Tappable extends StatefulWidget {
const Tappable({
super.key,
required this.onPressed,
required this.child,
});
final VoidCallback? onPressed;
@lukepighetti
lukepighetti / example.dart
Last active December 7, 2023 14:09
Another logger
class MyService {
final _log = Logger('MyService');
void init() {
try {
// operation
_log("initialized");
} catch(e, stackTrace){
_log.e("init() error", e, stackTrace);
}
@lukepighetti
lukepighetti / signing-google-sign-in.md
Last active October 29, 2023 01:51
Finally figured out how to get Google Sign In working. I needed to add my debug keys to Firebase https://twitter.com/luke_pighetti/status/1677328491216359434?s=20

Figured it out! You need to add:

  1. Debug signing keys
  2. Release signing keys
  3. PlayStore signing keys

Use JDK from Android Studio

  • export JAVA_HOME='/Applications/Android Studio.app/Contents/jbr/Contents/Home/'
@lukepighetti
lukepighetti / Fastfile
Created July 6, 2023 13:39
Release Flutter app with environment variables to TestFlight every night with GitHub Actions
# ios/Fastlane/Fastfile
default_platform(:ios)
APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"]
APPLE_KEY_CONTENT = ENV["APPLE_KEY_CONTENT"]
APPLE_KEY_ID = ENV["APPLE_KEY_ID"]
DEVELOPER_APP_ID = ENV["DEVELOPER_APP_ID"]
DEVELOPER_APP_IDENTIFIER = ENV["DEVELOPER_APP_IDENTIFIER"]
GIT_AUTHORIZATION = ENV["GIT_AUTHORIZATION"]
GITHUB_RUN_NUMBER = ENV["GITHUB_RUN_NUMBER"]
import 'package:flutter/material.dart';
class TextInputComponent extends StatefulWidget {
const TextInputComponent({super.key});
@override
State<TextInputComponent> createState() => _TextInputComponentState();
}
class _TextInputComponentState extends State<TextInputComponent> {
@lukepighetti
lukepighetti / device_service.dart
Last active June 28, 2023 00:49
All the basic data you need to roll your own analytics payloads
import 'dart:convert';
import 'dart:io';
import 'package:app/extensions.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:get_it/get_it.dart';
import 'package:package_info_plus/package_info_plus.dart';
// we need this in core dart so all these serialization packages can use it
// this enables generalized solutions for storage, messaging, tasks, etc
abstract interface class JsonCoder<T> {
String toJson(T payload);
T fromJson(String payload);
}
// then we can create generalized packages for things like storage
/// ```dart
@lukepighetti
lukepighetti / main.dart
Last active June 2, 2023 12:23
Need UUIDs that are shorter and URL safe? UUID -> hex bytes -> Base64Url
import 'dart:convert';
import 'package:uuid/uuid.dart';
void main(List<String> arguments) {
final uuid = "57290fdf-790f-4894-859e-3db0ae087f0e";
final codec = ShortUuidCodec();
final encodedUuid = codec.encode(uuid);
final decodedUuid = codec.decode(encodedUuid);
@lukepighetti
lukepighetti / fragment.glsl
Last active September 12, 2024 22:52
WebGL mesh gradient shaders from https://meshgradient.com, all credit to Burak Aslan https://www.producthunt.com/products/mesh-gradient
#define MAX_POINTS 16
precision mediump float;
uniform sampler2D texture;
uniform vec2 points[MAX_POINTS];
uniform float s2[MAX_POINTS];
uniform vec2 w[MAX_POINTS];
uniform int npoints;
uniform int warp;