Skip to content

Instantly share code, notes, and snippets.

@mjohnsullivan
mjohnsullivan / bouncy_truck.dart
Created June 18, 2021 21:54
An example of mixing and controlling multiple animations in Rive
import 'package:flutter/material.dart';
import 'package:rive/rive.dart';
void main() => runApp(MaterialApp(
home: BouncyTruckAnimation(),
));
class BouncyTruckAnimation extends StatefulWidget {
const BouncyTruckAnimation({Key? key}) : super(key: key);
void determineDragPosition(BuildContext itemContext,
DragUpdateDetails details, Item draggedItem, double itemHeight) {
_dragOperation.offset.value = details.globalPosition;
// Find the fixed extent list renderer.
RenderSliverFixedExtentList extentList;
for (var p = itemContext.findRenderObject();
p != null;
p = p is RenderObject ? p.parent as RenderObject : null) {
if (p is RenderSliverFixedExtentList) {
import 'package:flutter/material.dart';
void main() => runApp(KeepAliveExampleApp());
class KeepAliveExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: Scaffold(
@mjohnsullivan
mjohnsullivan / streams_with_async.dart
Created December 3, 2019 17:55
Example of how to transform streams of data in Dart/Flutter when the transform involves asynchronous calls.
import 'dart:async';
import 'dart:math' show Random;
final random = Random();
// Mock data for a list of messages
const messageList = [
{
'message': 'Message 1',
'timestamp': 1,
@mjohnsullivan
mjohnsullivan / border_icon_button.dart
Created December 1, 2019 21:39
A Flutter button comprising a raised icon with a border and some text
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.lightBlue,
@mjohnsullivan
mjohnsullivan / curved_appbar.dart
Created November 28, 2019 19:59
A curved Flutter AppBar where widgets scroll nicely beneath the curved portion
import 'package:flutter/material.dart';
void main() => runApp(
MaterialApp(home: MyHomePage()),
);
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
const curveHeight = 50.0;
@mjohnsullivan
mjohnsullivan / draggable_custom_painter.dart
Created November 26, 2019 21:32
Handling draggable areas or elements drawn on a Flutter CustomPainter
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Draggable Custom Painter',
home: Scaffold(
@mjohnsullivan
mjohnsullivan / icon_gradient.dart
Created November 25, 2019 22:09
Apply a color gradient to an icon in Flutter
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/scheduler.dart';
void main() => runApp(ExampleApp());
class ExampleApp extends StatelessWidget {
@override
@mjohnsullivan
mjohnsullivan / smiley.dart
Created February 5, 2019 23:30
A custom painter that draws a smiley face in Flutter
// Copyright 2019 The Chromium 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 'package:flutter/material.dart';
import 'dart:math' as Math;
void main() => runApp(MyApp());