Lädt...

🔧 🚀 Mengenal Navigation dan Routing di Flutter! 📱✨


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Navigasi dan routing adalah aspek penting dalam pengembangan aplikasi Flutter untuk berpindah antar halaman atau skenario tertentu dalam aplikasi. Flutter menyediakan beberapa cara untuk mengelola navigasi, termasuk Direct Navigation, Named Routes, dan menggunakan package pihak ketiga seperti GoRouter.

1. Named Route vs Direct Navigation

a. Direct Navigation (Push and Pop)

Direct Navigation menggunakan metode Navigator.push() dan Navigator.pop() untuk berpindah antar halaman. Ini sering digunakan untuk navigasi sederhana.

Contoh penggunaan Direct Navigation:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: HomePage(),
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Home')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => SecondPage()),
            );
          },
          child: Text('Go to Second Page'),
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Second Page')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Back to Home'),
        ),
      ),
    );
  }
}

b. Named Route

Named Route memberikan cara yang lebih terorganisir dengan mendefinisikan rute di MaterialApp.

Contoh Named Route:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    initialRoute: '/',
    routes: {
      '/': (context) => HomePage(),
      '/second': (context) => SecondPage(),
    },
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Home')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pushNamed(context, '/second');
          },
          child: Text('Go to Second Page'),
        ),
      ),
    );
  }
}

class SecondPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Second Page')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text('Back to Home'),
        ),
      ),
    );
  }
}

2. Deep Linking dan Dynamic Routes

Deep Linking memungkinkan pengguna untuk membuka halaman tertentu dalam aplikasi menggunakan URL. Ini bisa diterapkan menggunakan onGenerateRoute.

Contoh Dynamic Routes dengan onGenerateRoute:

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    onGenerateRoute: (settings) {
      if (settings.name == '/detail') {
        final args = settings.arguments as String;
        return MaterialPageRoute(
          builder: (context) => DetailPage(data: args),
        );
      }
      return MaterialPageRoute(builder: (context) => HomePage());
    },
  ));
}

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Home')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pushNamed(context, '/detail', arguments: 'Hello from Home!');
          },
          child: Text('Go to Detail Page'),
        ),
      ),
    );
  }
}

class DetailPage extends StatelessWidget {
  final String data;
  DetailPage({required this.data});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Detail Page')),
      body: Center(child: Text(data)),
    );
  }
}

3. Navigation dengan GoRouter

GoRouter adalah package yang memudahkan navigasi dengan fitur seperti declarative routing dan deep linking.

Tambahkan dependensi dalam pubspec.yaml:

dependencies:
  go_router: ^10.0.0

Implementasi GoRouter:

import 'package:flutter/material.dart';

import 'package:go_router/go_router.dart';

void main() {

  runApp(MyApp());

}

class MyApp extends StatelessWidget {

  final GoRouter _router = GoRouter(

    routes: [

      GoRoute(

        path: '/',

        builder: (context, state) => HomePage(),

      ),

      GoRoute(

        path: '/detail/:message',

        builder: (context, state) {

          final message = state.pathParameters['message']!;

          return DetailPage(message: message);

        },

      ),

    ],

  );

  @override

  Widget build(BuildContext context) {

    return MaterialApp.router(

      routerConfig: _router,

    );

  }

}

class HomePage extends StatelessWidget {

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(title: Text('Home')),

      body: Center(

        child: ElevatedButton(

          onPressed: () {

            context.go('/detail/Hello%20from%20Home!');

          },

          child: Text('Go to Detail Page'),

        ),

      ),

    );

  }

}

class DetailPage extends StatelessWidget {

  final String message;

  DetailPage({required this.message});

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(title: Text('Detail Page')),

      body: Center(child: Text(message)),

    );

  }

} 

Kesimpulan

Flutter menawarkan berbagai cara untuk navigasi:

Direct Navigation cocok untuk navigasi sederhana.
Named Route lebih terstruktur dan mudah dikelola.
Deep Linking dan Dynamic Routes memudahkan navigasi berbasis parameter.
GoRouter menyederhanakan navigasi dengan fitur deklaratif dan deep linking.

Dengan pemahaman ini, Anda dapat memilih metode yang paling sesuai untuk proyek Kalian!

...

🔧 🚀 Mengenal Navigation dan Routing di Flutter! 📱✨


📈 70.6 Punkte
🔧 Programmierung

🔧 🚀 Mengenal Database dan Local Storage di Flutter! 📱💾


📈 49.38 Punkte
🔧 Programmierung

🔧 Mengenal Gaya Arsitektur API: REST, SOAP, GraphQL, dan Lebih Banyak Lagi


📈 40.11 Punkte
🔧 Programmierung

🎥 Flutter Performance, Flutter Games, Flutter Tooling, & More (#AskFlutter at Flutter Live)


📈 37.06 Punkte
🎥 Videos

🔧 Flutter news from GDD China: uniting Flutter on web and mobile, and introducing Flutter 1.9


📈 27.8 Punkte
🔧 Programmierung

🎥 Origin of Flutter, Dart 2.0, E-Commerce with Flutter, & More (#AskFlutter at Flutter Live)


📈 27.8 Punkte
🎥 Videos

🔧 Membuat Landing Page Sederhana dan Cepat dengan ReactJS, Vite, dan Tailwind CSS


📈 27.18 Punkte
🔧 Programmierung

🔧 Mengenal Industri Semikonduktor: Pilar Teknologi Modern


📈 26.52 Punkte
🔧 Programmierung

🔧 Frontosa Cichlid: Mengenal Ikan Hias Eksotis dari Danau Tanganyika


📈 26.52 Punkte
🔧 Programmierung

🔧 Mengenal useState pada React.js


📈 26.52 Punkte
🔧 Programmierung

🔧 🏪 Mengenal Laravel Staff: Request, Response, Views, And Validation


📈 26.52 Punkte
🔧 Programmierung

🔧 Mengenal Asymmetric Encryption: Keamanan Data Tingkat Tinggi dengan Golang


📈 26.52 Punkte
🔧 Programmierung

🔧 Mengenal Konsep MVC di Laravel: Panduan Lengkap untuk Pemula


📈 26.52 Punkte
🔧 Programmierung

🔧 Panduan Singkat Mengenal Eloquent ORM di Laravel


📈 26.52 Punkte
🔧 Programmierung

🔧 📦 Mengenal Monorepo: Struktur & Manfaat dalam Proyek JavaScript


📈 26.52 Punkte
🔧 Programmierung

🔧 🗺️ Peta Jalan Laravel: Menjelajah Routing, Middleware, dan Controller (Indonesian Version)


📈 25.21 Punkte
🔧 Programmierung

🔧 Understanding Next.js Page Routing vs App Routing and SSR Changes in Next.js 14


📈 23.24 Punkte
🔧 Programmierung

🔧 Relative Vs Dynamic Routing in React – Different Routing Methods with Examples


📈 23.24 Punkte
🔧 Programmierung

🔧 Kotlin Routing - routing everything


📈 23.24 Punkte
🔧 Programmierung

📰 Advanced Routing: Homematic IP bekommt intelligentes Routing


📈 23.24 Punkte
📰 IT Nachrichten

📰 Open Routing: Facebook gibt interne Plattform für Backbone-Routing frei


📈 23.24 Punkte
📰 IT Nachrichten

🔧 🚀 Pengenalan Flutter: Dasar, State Management, dan Contoh Kode 🎯


📈 22.86 Punkte
🔧 Programmierung

🔧 Angular Routing and Navigation Made So Easy A Child Could Do It


📈 21.22 Punkte
🔧 Programmierung

🔧 🚀 Routing and Navigation in React.js🚀


📈 21.22 Punkte
🔧 Programmierung

🔧 🌐 Routing and Navigation in React.js 🚀


📈 21.22 Punkte
🔧 Programmierung

🔧 Routing and Navigation in React.js 🚀


📈 21.22 Punkte
🔧 Programmierung

🔧 Day 4: Routing and Navigation in Angular


📈 21.22 Punkte
🔧 Programmierung

📰 E-Bike-Navigation: Boschs Flow-App unterstützt nun Komoot- und GPX-Re-Routing


📈 21.22 Punkte
📰 IT Nachrichten

🔧 Mastering React Router: The Ultimate Guide to Navigation and Routing in React Apps!


📈 21.22 Punkte
🔧 Programmierung

🔧 ✨ [13] - Setup Layout, Routing, and Stack Navigation in React Native Expo


📈 21.22 Punkte
🔧 Programmierung

🔧 Mastering Angular Routing & Guards: Secure and Seamless Navigation!


📈 21.22 Punkte
🔧 Programmierung

🔧 3. Routing and Navigation


📈 21.22 Punkte
🔧 Programmierung

matomo