Skip to content

Instantly share code, notes, and snippets.

@rodydavis
rodydavis / main.dart
Last active April 26, 2024 17:09
Flutter AI Theme Generation (Function Calling)
// Copyright 2024 the Dart project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:google_generative_ai/google_generative_ai.dart';
import 'package:url_launcher/link.dart';
@rodydavis
rodydavis / main.dart
Last active April 26, 2024 16:13
Gemini Tasks (Function Calling)
// Copyright 2024 the Dart project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:google_generative_ai/google_generative_ai.dart';
import 'package:url_launcher/link.dart';
@rodydavis
rodydavis / dart_web_pick_file.dart
Created April 23, 2024 20:06
How to pick a file with package:web
Future<Uint8List?> pickFile() async {
final el = html.document.createElement('input') as html.HTMLInputElement;
el.type = 'file';
el.accept = 'image/*';
el.click();
final completer = Completer<Uri?>();
el.onchange = (html.Event e) {
final files = el.files;
if (files != null && files.length != 0) {
final file = files.item(0);
@rodydavis
rodydavis / main.dart
Last active April 25, 2024 21:38
Ask the Menu
// Copyright 2024 the Dart project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license
// that can be found in the LICENSE file.
import 'dart:async';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:google_generative_ai/google_generative_ai.dart';
import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
class ChatBubble extends StatelessWidget {
const ChatBubble({
super.key,
this.child,
this.text,
required this.isUser,
});
@rodydavis
rodydavis / json_canvas.dart
Created March 22, 2024 19:34
Dart classes for JsonCanvas schema
import 'package:dart_mappable/dart_mappable.dart';
part 'schema.mapper.dart';
@MappableClass()
class JsonCanvas with JsonCanvasMappable {
List<JsonCanvasNode> nodes;
List<JsonCanvasEdge> edges;
JsonCanvas({
@rodydavis
rodydavis / main.dart
Created March 6, 2024 23:49
How to Print Multiple Objects to the Console with print()
void main() {
final number = 1;
final str = 'Hello World';
print((number, str));
print((DateTime.now(), str));
print((DateTime.now(), count: number, description: str));
@rodydavis
rodydavis / main.dart
Created March 6, 2024 21:16
Dart method calling
void main() {
myFunction(1, 2, c: 3, d: 4);
myFunction(1, c: 3, d: 4, 2);
myFunction(c: 3, d: 4, 1, 2);
myFunction(c: 3, 1, 2, d: 4);
myFunction.call(1, 2, c: 3, d: 4);
Function.apply(myFunction, [1, 2], {#c: 3, #d: 4});
}
void myFunction(int a, int b, {int? c, int? d}) {
@rodydavis
rodydavis / main.dart
Last active March 6, 2024 21:07
Dart truthy extension
void main() {
print((null, null.isTruthy));
print(('', ''.isTruthy));
print(('false', 'false'.isTruthy));
print(('true', 'true'.isTruthy));
print((0, 0.isTruthy));
print((1, 1.isTruthy));
print((false, false.isTruthy));
print((true, true.isTruthy));
print(([], [].isTruthy));
@rodydavis
rodydavis / material_navigation_view.dart
Created January 10, 2024 22:00
Navigation view similar to Fluent UI built with Material Design 3
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:signals/signals_flutter.dart';
class NavigationView extends StatefulWidget {
const NavigationView({
super.key,
required this.appBar,
required this.items,
this.footerItems = const [],