Skip to content

gzeinnumer/flutter_navigator_reload

Repository files navigation

flutter_navigator_reload

Page 1

Navigator.pushNamed(
  context,
  Page2View.TAG,
  arguments: "Sent Dari Main",
).then((value) {
  var snackBar = SnackBar(
    content: Text(value as String),
  );

  //Dari Page 2  akan muncul di showSnackBar
  ScaffoldMessenger.of(context).showSnackBar(snackBar);
});

Page 2

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        Navigator.pop(context,"Dari Page 2");
        return false;
      },
      child: Scaffold(
        appBar: AppBar(
          title: const Text("Page2"),
        ),
        body: _body(),
      ),
    );
  }

Example

import 'package:flutter/material.dart';
import 'package:flutter_navigator_reload/my_home_page.dart';
import 'package:flutter_navigator_reload/page_2_view.dart';

class AppRouter {
  static Route<dynamic> generateRoute(RouteSettings routeSettings) {
    switch (routeSettings.name) {
      case Page2View.TAG:
        final args = routeSettings.arguments as String;
        return MaterialPageRoute(builder: (_) => Page2View(args));
      default:
        return MaterialPageRoute(builder: (_) => const MyHomePage(title: 'Flutter Demo Home Page'));
    }
  }
}

void pushAndRemoveUntil(BuildContext context, String tag, Widget view) {
  Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) => view), ModalRoute.withName(tag));
}
import 'package:flutter/material.dart';
import 'package:flutter_navigator_reload/app_router.dart';
import 'package:flutter_navigator_reload/my_home_page.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      onGenerateRoute: AppRouter.generateRoute,
      initialRoute: "/",
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
import 'package:flutter/material.dart';
import 'package:flutter_navigator_reload/page_2_view.dart';

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  void _incrementCounter() {
    Navigator.pushNamed(
      context,
      Page2View.TAG,
      arguments: "Sent Dari Main",
    ).then((value) {
      var snackBar = SnackBar(
        content: Text(value as String),
      );

      ScaffoldMessenger.of(context).showSnackBar(snackBar);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: const <Widget>[
            Text(
              'Click Add To Move To Page 2',
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
import 'package:flutter/material.dart';

class Page2View extends StatelessWidget {
  static const String TAG = "Page2View";
  String args;
  Page2View(this.args, {Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        Navigator.pop(context,"Dari Page 2");
        return false;
      },
      child: Scaffold(
        appBar: AppBar(
          title: const Text("Page2"),
        ),
        body: _body(),
      ),
    );
  }

  Widget _body() {
    return Builder(
      builder: (context) {
        return SizedBox(
          width: double.infinity,
          height: double.infinity,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
                Text(args)
            ],
          ),
        );
      }
    );
  }
}

Copyright 2023 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published