Port Oprogramowania | Nehiy

Samouczki i rozwój oprogramowania => Flutter => Wątek zaczęty przez: Nehiy w Mar 29, 2025, 09:59 AM

Tytuł: Architektura Nawigacji w Flutterze: Kompleksowy Przewodnik
Wiadomość wysana przez: Nehiy w Mar 29, 2025, 09:59 AM

Flutter to jeden z najpopularniejszych frameworków do tworzenia aplikacji mobilnych, który zdobył uznanie dzięki swojej prostocie i wydajności. Stworzony przez Google, pozwala na budowanie aplikacji zarówno na iOS, jak i Android przy użyciu jednej bazy kodu. Jedną z kluczowych zalet Fluttera jest elastyczna i intuicyjna architektura nawigacji. W tym artykule przyjrzymy się szczegółowo systemowi nawigacji w Flutterze, omówimy podstawowe pojęcia i pokażemy, jak zastosować go w praktyce za pomocą przykładów kodu.

Czym jest nawigacja w Flutterze?
Nawigacja w Flutterze odnosi się do procesu przechodzenia między różnymi ekranami aplikacji. Większość aplikacji mobilnych składa się z wielu ekranów, a użytkownicy oczekują płynnego przechodzenia między nimi. Flutter oferuje w tym celu widget o nazwie Navigator, który zarządza ekranami w formie stosu (ang. stack). Dzięki metodom takim jak ,,push" (dodanie) i ,,pop" (usunięcie) możemy kontrolować ten stos i określać, który ekran jest aktualnie widoczny.

Podstawowe pojęcia nawigacji

Jak działa nawigacja w praktyce?
Przyjrzyjmy się prostemu przykładowi nawigacji między dwoma ekranami.
Przykład kodu: Podstawowa nawigacja

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: FirstScreen(),
    );
  }
}

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Pierwszy Ekran')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondScreen()),
            );
          },
          child: Text('Przejdź do drugiego ekranu'),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Drugi Ekran')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Wróć'),
        ),
      ),
    );
  }
}

W powyższym przykładzie:

Nawigacja z nazwami tras (Named Routes)
Jeśli aplikacja ma wiele ekranów, ręczne zarządzanie trasami może być uciążliwe. Flutter pozwala na definiowanie nazwanych tras w MaterialApp, co ułatwia nawigację.
Przykład kodu: Named Routes

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: '/pierwszy',
      routes: {
        '/pierwszy': (context) => FirstScreen(),
        '/drugi': (context) => SecondScreen(),
      },
    );
  }
}

class FirstScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Pierwszy Ekran')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pushNamed(context, '/drugi');
          },
          child: Text('Przejdź do drugiego ekranu'),
        ),
      ),
    );
  }
}

class SecondScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Drugi Ekran')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Wróć'),
        ),
      ),
    );
  }
}

W tym przypadku:

Zaawansowana nawigacja z Navigator 2.0
Dla bardziej złożonych aplikacji Flutter oferuje Navigator 2.0, który daje pełną kontrolę nad stosem nawigacji. Jest to szczególnie przydatne w aplikacjach z dynamicznymi trasami lub przy integracji z głębokimi linkami (deep linking). Jednak dla większości początkujących programistów Navigator 1.0 w zupełności wystarczy.

Najlepsze praktyki

Podsumowanie
Architektura nawigacji w Flutterze jest potężnym narzędziem, które pozwala na tworzenie intuicyjnych i płynnych aplikacji mobilnych. Od prostych przejść między ekranami za pomocą push i pop po zaawansowane zarządzanie trasami z Navigator 2.0 – Flutter oferuje rozwiązania dla każdego poziomu zaawansowania. Wypróbuj podane przykłady kodu i dostosuj je do swoich potrzeb, aby stworzyć aplikację, która zachwyci użytkowników!