Skip to content

Instantly share code, notes, and snippets.

@rena2019
rena2019 / main.dart
Last active August 22, 2025 09:28
Riverpod AsyncNotifier/AsyncValue (List)
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// Riverpod AsyncNotifier/AsyncValue (List)
final _rng = Random();
Future<String> fetchItem(int id) async {
await Future.delayed(Duration(milliseconds: 500 + _rng.nextInt(900)));
@rena2019
rena2019 / riverpod_async_value_state_notifier_list.dart
Last active August 22, 2025 09:06
Riverpod AsyncValue/StateNotifier/FutureProvider (List)
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
///Riverpod AsyncValue/StateNotifier/FutureProvider (List)
/// *StateNotifier deprecated in Riverpod 3
final _rng = Random();
// Simulierter fetch für einen einzelnen Listeneintrag
@rena2019
rena2019 / riverpod_async_value.dart
Last active August 22, 2025 08:26
Riverpod AsyncValue/FutureProvider
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// Simulierter fetch (kann auch echte HTTP-Aufrufe enthalten)
Future<String> fetchGreeting() async {
print("FETCH");
await Future.delayed(const Duration(seconds: 2));
final random = DateTime.now().millisecondsSinceEpoch % 2 == 0;
if (random) {
@rena2019
rena2019 / tear_off_constructor.dart
Created August 21, 2025 06:03
Dart constructor tear-offs
class Person {
String name;
static int _instanceCount = 0;
Person(this.name) {
_instanceCount++; // Zähler erhöhen, wenn eine neue Instanz erstellt wird
}
static int get instanceCount => _instanceCount; // Getter für den Zähler
}
void main() {
@rena2019
rena2019 / riverpod_provider.dart
Created August 20, 2025 12:20
Riverpod Provider
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// We create a "provider", which will store a value (here "Hello world").
// By using a provider, this allows us to mock/override the value exposed.
final helloWorldProvider = Provider((_) => 'Hello world');
void main() {
runApp(
// For widgets to be able to read providers, we need to wrap the entire
@rena2019
rena2019 / main.dart
Created August 13, 2025 13:03
Flutter gradient
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
@rena2019
rena2019 / main.dart
Last active July 10, 2025 08:41
Flutter center graphic with label left and right (with table)
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@rena2019
rena2019 / center_button_with_labels.dart
Created July 9, 2025 13:34
Flutter center button with label to left and right 2
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
@rena2019
rena2019 / main.dart
Last active July 10, 2025 05:45
Flutter center button with label to left and right (with Stack)
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@rena2019
rena2019 / mygridview.dart
Last active July 7, 2025 16:55
GridView mit Mindestbreite
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'GridView mit Mindestbreite',
home: Scaffold(