Skip to content

Instantly share code, notes, and snippets.

@kaboc
kaboc / bottom_scroll_detector.dart
Last active June 18, 2024 04:48
Infinite scrolling
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
class BottomScrollDetector extends StatefulWidget {
const BottomScrollDetector({
super.key,
required this.extent,
required this.slivers,
required this.onBottomReached,
this.controller,
@kaboc
kaboc / main.go
Created January 21, 2023 14:13
Example of using PocketBase (v0.11.3) as a framework
package main
import (
"log"
"net/http"
"github.com/labstack/echo/v5"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
@kaboc
kaboc / main.dart
Created May 30, 2022 11:53
Minimal counter example (with Grab + Pot)
import 'package:flutter/material.dart';
import 'package:grab/grab.dart';
import 'package:pot/pot.dart';
final counterPot = Pot(
() => ValueNotifier(0),
disposer: (notifier) => notifier.dispose(), // This disposer is not called in this example, but I think you get the idea.
);
void main() => runApp(const App());
@kaboc
kaboc / main.dart
Last active September 9, 2023 14:32
Minimal counter example (with Grab)
import 'package:flutter/material.dart';
import 'package:grab/grab.dart';
final counter = ValueNotifier(0);
void main() => runApp(const App());
class App extends StatelessWidget {
const App({super.key});
@kaboc
kaboc / fitted_box.dart
Created March 10, 2021 08:13
FittedBox fitting content to screen width.
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.from(
colorScheme: ColorScheme.light(primary: Colors.green),
@kaboc
kaboc / main.dart
Last active March 10, 2021 08:13
Notification between methods without passing a notifier (but with runZoned used instead)
import 'dart:async';
enum ErrorTypes { addUser, saveUser }
final errorHandler = ErrorHandler<ErrorTypes>();
Future<void> main() async {
Process.p1();
await Future<void>.delayed(const Duration(seconds: 1));
Process.p2();
import 'package:flutter/material.dart';
void main() => runApp(const App());
class App extends StatelessWidget {
const App();
@override
Widget build(BuildContext context) {
return const MaterialApp(
@kaboc
kaboc / overflow.dart
Created August 18, 2020 04:29
Three ways to allow the child to overflow the parent.
import 'package:flutter/material.dart';
void main() {
runApp(
const MaterialApp(
home: SafeArea(
child: Scaffold(
body: App(),
),
),
@kaboc
kaboc / finally.dart
Last active August 7, 2020 06:14
Example of utilising `finally` for some processing at the end of `await for` in an `async*` method.
import 'dart:async';
Future<void> main() async {
final controller = StreamController<int>();
final stream = counterStream(controller);
counter(controller);
await stream.forEach(print);
controller.close();
@kaboc
kaboc / floating_bottom_bar.dart
Last active September 4, 2022 15:09
Floating bottom navigation bar (DartPad: https://dartpad.dev/14c0fba024f187aeec9d4c0d2dce883b)
// A floating bottom navigation bar for flutter inspired by a screen cast of
// a similar one for React Native that I saw on Twitter. The original source
// is probably this post:
// https://hackernoon.com/how-we-created-tabbar-plugin-with-react-native-c00de2337f22
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() => runApp(const App());