Skip to content

Instantly share code, notes, and snippets.

@monkeyswarm
monkeyswarm / main.dart
Created August 2, 2021 00:05
Track containers 5: use overscroll notification on child listview to drive parent listview
// Use overscroll notification from child listvieew to affect the parent listview. Requires use of ClampingScroll{hysics}
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@monkeyswarm
monkeyswarm / main.dart
Created August 1, 2021 23:55
Track containers 3: list view with children changing content size
// List view, first and third changee height of their content.
import 'dart:math';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
@monkeyswarm
monkeyswarm / main.dart
Last active August 1, 2021 23:58
Track containers 4: nested list views
// Check that hitting the start/end of a child listview passes the scroll to the parent listview.
// Works as intended on laptop/dartpad with two-finger scroll on trackpad, but not with point and drag
import 'dart:math';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
@monkeyswarm
monkeyswarm / main.dart
Created August 1, 2021 23:14
Track containers 2: page view with dynamic viewportFraction
// subclass pagecontroller for variable viewportfraction.
// kind of works, gets weird for bottom one, paging gets wierd.
import 'dart:math';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class CustomPageController extends PageController {
double _viewportFraction = .5;
CustomPageController() : super(initialPage: 1);
@monkeyswarm
monkeyswarm / main.dart
Created August 1, 2021 22:02
Track containers 1: page view with overflowing children
// Overflowing children: portions cannot be touched when they overlap
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
@monkeyswarm
monkeyswarm / main.dart
Created July 22, 2021 19:10
DraggableScrollableSheet with header leaves a shade
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final _scaffoldKey = GlobalKey<ScaffoldState>();
void _showSheet() => _scaffoldKey.currentState!.showBottomSheet((context) =>
DraggableScrollableSheet(
@monkeyswarm
monkeyswarm / main.dart
Created July 19, 2021 22:15
Drag from bottom sheet to body target
import 'package:flutter/material.dart';
void main() {
runApp(HomePage());
}
class HomePage extends StatelessWidget {
static const double dim = 50;
final _scaffoldKey = GlobalKey<ScaffoldState>();
HomePage({Key? key}) : super(key: key);
@monkeyswarm
monkeyswarm / main.dart
Last active July 15, 2021 17:02
Flingy containers
import 'package:flutter/material.dart';
import 'package:flutter/physics.dart';
final totalHeight = 600.0;
final minimizedHeight = 100.0;
final maximizedHeight = 400.0;
void main() {
runApp(MyApp());
}