flutter run · hot reload aktywny

JacekKostowski

Programista. Na co dzień Dart i Flutter, PHP i jego frameworki. Czasem też Swift w Xcode. Kręcą mnie nowe technologie, a ta strona to mój mały plac zabaw: wszystko tu działa i wszystko da się kliknąć.

import 'package:flutter/material.dart';

class Jacek extends StatelessWidget {
  const Jacek({super.key});

  static const stack = ['Dart', 'PHP', 'Swift'];

  // kawa na wejściu, kod na wyjściu
  @override
  Widget build(BuildContext context) {
    return Playground(
      languages: stack,
      hotReload: true,
      fuel: Coffee.latteMacchiato,
    );
  }
}
flutter run · debugUTF-8 · Dart 3

// stos technologiczny

Moje zależności, prosto z plików konfiguracyjnych

Każdy programista ma swój pubspec.yaml, composer.json i Package.swift. Oto moje. Najedź na pozycję, żeby zobaczyć, do czego jej używam.

pubspec.yamlfront · mobile
  • sdk
  • dart^3.5Język, w którym myślę na co dzień. Null safety, async, czysto.
  • flutterstableJedna baza kodu, natywne apki na iOS i Androida.
  • dependencies
  • flutter_bloc / riverpod^8 / ^2Zarządzanie stanem, które da się czytać po pół roku.
  • dio^5Komunikacja z API, interceptory, obsługa błędów.
  • firebaselatestLogowanie, powiadomienia push, analityka.
composer.jsonback · api
  • require
  • php^8.3Nowoczesne PHP: typy, enumy, readonly, strict_types.
  • laravel/framework^11API, kolejki, Artisan i ekosystem, który po prostu działa.
  • symfony/*^7Komponenty i architektura, która wytrzymuje lata.
  • doctrine / eloquentORMMySQL i PostgreSQL bez pisania tego samego SQL-a dwa razy.
  • require-dev
  • phpunit · docker · gitalwaysTesty, powtarzalne środowisko i historia, która ma sens.
Package.swiftnatywnie · apple
  • swift-tools-version
  • swift5.10Kiedy coś musi być w stu procentach natywne na iOS albo macOS.
  • xcode16Moje drugie IDE. Podpisywanie, Instruments, symulatory.
  • dependencies
  • SwiftUIiOS 17+Deklaratywny UI, bardzo bliski temu, jak myśli się we Flutterze.
  • platform channelsbridgeMost między Flutterem a natywnym kodem Swift, gdy plugin nie wystarcza.
  • .experimental
  • nowe technologie^latestKręci mnie to, co dopiero wychodzi. Najpierw sprawdzam, potem oceniam.

// podejście

Jak myślę o kodzie, rozpisane jak drzewo widgetów

We Flutterze wszystko jest widgetem, a dobra aplikacja to dobrze ułożone drzewo. Z nawykami programisty jest tak samo.

MaterialApp (title: 'kostowski.pl')
  • Scaffold (body: …)
    • Understand()

      Najpierw rozumiem problem

      Pytam, zanim zacznę pisać. Kod rozwiązujący zły problem to najdroższy kod.

    • CleanCode()

      Piszę kod dla ludzi

      Czytelne nazwy i małe klasy. Kod czyta się dziesięć razy częściej, niż się go pisze.

    • Tested()

      Testuję to, co ważne

      Logika biznesowa ma testy. Dzięki temu zmiany nie zamieniają się w loterię.

    • Ship()

      Małe kroki, częste commity

      Każda zmiana mała na tyle, żeby dało się ją zrozumieć w jednym diffie.

// terminal

Poznaj mnie z linii poleceń

To prawdziwy, mały terminal. Wpisz help albo kliknij jedną z komend pod spodem.

jacek@kostowski: ~zsh

// lab

Wklej JSON, dostaniesz model w Darcie i w PHP

Codzienna robota programisty, który pisze i aplikację, i API: ten sam obiekt po obu stronach. Generator działa na żywo w przeglądarce. Zmień coś w JSON-ie i patrz.

✓ JSON poprawny

0 klas · 0 pólDart 3