Skip to content

gzeinnumer/flutter_navigator_simple_v4

Repository files navigation

flutter_navigator_simple_v4

onGenerateRoute: AppRouter.generateRoute,
initialRoute: SplashScreenView.TAG,
Navigator.pushReplacementNamed(context, FirstView.TAG);
Navigator.pushNamed(context, FirstView.TAG);
  • app_router.dart
import 'package:flutter/material.dart';
import 'package:flutter_navigator_simple_v4/ui/first_view.dart';
import 'package:flutter_navigator_simple_v4/ui/second_view.dart';
import 'package:flutter_navigator_simple_v4/ui/splash_screen_view.dart';

class AppRouter {
  static Route<dynamic> generateRoute(RouteSettings routeSettings) {
    switch (routeSettings.name) {
      case SplashScreenView.TAG:
        return MaterialPageRoute(builder: (_) => const SplashScreenView());
      case FirstView.TAG:
        return MaterialPageRoute(builder: (_) => const FirstView());
      case SecondView.TAG:
        return MaterialPageRoute(builder: (_) => const SecondView());
      default:
        return MaterialPageRoute(builder: (_) => const SplashScreenView());
    }
  }
}
  • main.dart
import 'package:flutter/material.dart';
import 'package:flutter_navigator_simple_v4/app_router.dart';
import 'package:flutter_navigator_simple_v4/ui/splash_screen_view.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      onGenerateRoute: AppRouter.generateRoute,
      initialRoute: SplashScreenView.TAG,
    );
  }
}
  • splash_Screen.dart
import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter_navigator_simple_v4/ui/first_view.dart';

class SplashScreenView extends StatelessWidget {
  static const String TAG = "SplashScreenView";

  const SplashScreenView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("SplashScreen"),
      ),
      body: Builder(
          builder: (context) {
            startSplashScrean(context);
            return const Center(
              child: CircularProgressIndicator(),
            );
          },
      ),
    );
  }

  startSplashScrean(BuildContext context) async{
    var duration = const Duration(seconds: 3);
    return Timer(duration, () {
      Navigator.pushReplacementNamed(context, FirstView.TAG);
    });
  }
}
  • first_view.dart
import 'package:flutter/material.dart';
import 'package:flutter_navigator_simple_v4/ui/second_view.dart';

class FirstView extends StatelessWidget {
  static const String TAG = "FirstView";

  const FirstView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("First"),
      ),
      body: Center(
        child: ElevatedButton(
            child: const Text("To Second"),
            onPressed: () {
              Navigator.pushNamed(context, SecondView.TAG);
            },
        ),
      ),
    );
  }
}
  • second_view.dart
import 'package:flutter/material.dart';

class SecondView extends StatelessWidget {
  static const String TAG = "SecondView";

  const SecondView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Second"),
      ),
      body: Center(
        child: ElevatedButton(
            child: const Text("Go Back"),
            onPressed: () {
              Navigator.pop(context);
            },
        ),
      ),
    );
  }
}

Copyright 2022 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published