Skip to content

Instantly share code, notes, and snippets.

// ignore_for_file: public_member_api_docs, constant_identifier_names
const _maxCallDepth = 100;
void cycleDetected() {
throw Exception('Cycle detected');
}
void mutationDetected() {
throw Exception('Computed cannot have side-effects');
}
import 'package:cronet_http/cronet_http.dart';
import 'package:cupertino_http/cupertino_http.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:fetch_client/fetch_client.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:platform_info/platform_info.dart';
import 'package:flutter/foundation.dart';
void main() async {
@rodydavis
rodydavis / flutter_stream_widget.dart
Created November 2, 2023 23:16
Render a widget as a stream instead of a single funciton
import 'dart:async';
import 'package:flutter/widgets.dart';
abstract class StreamWidget extends StatefulWidget {
const StreamWidget({Key? key}) : super(key: key);
Stream<Widget> build(BuildContext context);
void initState() {}
@rodydavis
rodydavis / input_output_preview.dart
Created November 1, 2023 22:01
Flutter input, output, preview
import 'package:flutter/material.dart';
import 'two_pane.dart';
class InputOutputPreview extends StatefulWidget {
const InputOutputPreview({
super.key,
required this.title,
required this.input,
required this.output,
@rodydavis
rodydavis / flutter-multi-touch-canvas-demo.dart
Last active September 27, 2023 06:47
Flutter Multi Touch Canvas Demo
import 'dart:async';
import 'dart:math' as math;
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@rodydavis
rodydavis / flutter_all_fastlane.sh
Last active September 19, 2023 06:20
Using Fastlane for Flutter to deploy iOS, Mac, Android and Web
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
@rodydavis
rodydavis / flutter_device_utils.dart
Created June 7, 2020 21:20
Flutter Device Utils
import 'package:flutter/foundation.dart';
import 'dart:io';
bool get isWeb => kIsWeb;
bool get isMobile => !isWeb && (Platform.isIOS || Platform.isAndroid);
bool get isDesktop =>
!isWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux);
bool get isApple => !isWeb && (Platform.isIOS || Platform.isMacOS);
bool get isGoogle => !isWeb && (Platform.isAndroid || Platform.isFuchsia);
@rodydavis
rodydavis / flutter_material_3_markdown_view.dart
Created September 13, 2022 15:43
Material 3 Theme for Markdown package in Flutter
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:go_router/go_router.dart';
import 'package:markdown/markdown.dart' as md;
import 'package:url_launcher/url_launcher.dart';
class MarkdownView extends StatelessWidget {
const MarkdownView({
Key? key,
required this.markdown,
@rodydavis
rodydavis / figma-codegen-lit.ts
Created June 23, 2023 07:36
Generate Lit Web Component with Figma API Dev Mode
figma.codegen.on('generate', async (event) => {
const name = event.node.name;
const names = getUniqueNodeNames(event.node, {});
const css = await createCss(event.node, names);
const tokens = getTokens(event.node, []);
const html = await createHtml(event.node, names);
const code = template(name, css, html, tokens);
return [
{
language: "TYPESCRIPT",
@rodydavis
rodydavis / flutter_piano.dart
Created December 5, 2019 02:18
Flutter Create Winning Piano
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {