Skip to content

Instantly share code, notes, and snippets.

View 100xA's full-sized avatar

Jan B. 100xA

View GitHub Profile
@100xA
100xA / flutter_responsive_workshop.md
Created January 14, 2026 08:51
# Flutter Responsive Layouts Workshop

1. Einführung

Responsive vs. Adaptive Design

  • Responsive Design: UI passt sich an verfügbaren Platz an (gleiche Komponenten, andere Größe)
  • Adaptive Design: UI verhält sich anders je nach Kontext (andere Komponenten/Navigation)
  • Flutter kombiniert beides – wir brauchen beide Ansätze
@100xA
100xA / compute_kappa.py
Created October 27, 2025 10:20
Cohen Kappa Score
import numpy as np
import pandas as pd
from sklearn.metrics import cohen_kappa_score, accuracy_score
A_T1 = [5,5,3,5,4,5,5,4,4,5]
B_T1 = [5,4,5,4,4,4,3,5,4,3]
A_T2 = [5,5,3,5,5,5,5,5,5,2]
B_T2 = [2,4,3,3,4,3,4,2,1,1]
@100xA
100xA / main.dart
Created October 15, 2025 08:52
Provider/ChangeNotifier
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => CartModel()),
Provider<ApiService>(create: (_) => ApiService()),
ChangeNotifierProvider(create: (_) => CounterModel()),
@100xA
100xA / main.dart
Created October 13, 2025 08:53
Student Manager
import 'dart:io';
/// Beschreibung:
/// Du sollst eine kleine Konsolen-App programmieren, mit
/// der man Studenten anlegen, anzeigen und auswerten kann.
/// Das Programm soll:
/// Einen neuen Studenten aufnehmen (Name, Alter, Note)
/// Alle gespeicherten Studenten anzeigen
/// Die Durchschnittsnote berechnen
/// Beendet werden können
@100xA
100xA / main.dart
Created October 8, 2025 08:42
Stack, Alertdialogs und ScaffoldMessenger
import 'package:flutter/material.dart';
void main() => runApp(const SnackbarDialogDemoApp());
class SnackbarDialogDemoApp extends StatelessWidget {
const SnackbarDialogDemoApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
@100xA
100xA / main.dart
Created October 7, 2025 08:36
TextFormFields & Drawers
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() => runApp(const DemoApp());
class DemoApp extends StatelessWidget {
const DemoApp({super.key});
@override
Widget build(BuildContext context) {
@100xA
100xA / main.dart
Created September 23, 2025 08:50
Expanded Übung
/*
Aufgabe:
Erstelle eine Flutter-App mit einem einzigen Screen.
Dieser Screen soll in drei vertikale Bereiche aufgeteilt werden.
Die Höhe der Bereiche soll im Verhältnis 20 % – 60 % – 20 % verteilt werden.
Inhalt der Bereiche:
1. Oberer Bereich (20 %):
- Zeige hier einen großen Text als Titel, zentriert in der Mitte des Bereichs.
- Beispiel: "Willkommen zur App!"
@100xA
100xA / main.dart
Last active September 21, 2023 15:33
Aufgaben 21.09.23
import 'dart:math';
void main() {
}
void aufgabe10(){
var number = 124;
if(number % 2 == 0){
@100xA
100xA / main.dart
Created April 19, 2023 09:54
dashing-echo-9919
void main() {
for (int i = 0; i < 5; i++) {
print('hello ${i + 1}');
}
}
Zwar gibt uns das BlOC State Management eine BL die eine Unterteilung in der PL und BL schafft, jedoch müssen andere Code Elemente auchiwo verankert sein
Deshalb halten wir uns an den Clean Architecture Approach und haben den Code folgendermaßen unterteilt:
- Application layer: Dient als Speicherort für die BL und States der einzelnen Blocs
- Domain layer: hier werden die jeweiligen Models und CheckServices (Password-Parameter) hinterlegt
- Infrastructure: Klassen die direkt in die Daten/Firebase Authentication zugreifen
- Presentation: PresentationsLogik
Zusätzlich haben wir neben der Aufteilung zwei Folder ertellst:
- Routing: Für das Navigieren des Users in der App zuständig
- Services: kleinere Services die sonst eine schnittstelle zwischen BL und PL bilden
dazu die zwei Klassen: