Home Android Keep Bottom Navigation Bar when push to New Screen

Keep Bottom Navigation Bar when push to New Screen

0
Keep Bottom Navigation Bar when push to New Screen

Halo teman – teman,
Pernah g sih, lihat ada aplikasi yang memiliki Bottom Navigation Bar, tetapi saat berpindah ke Screen/Page baru Bottom Navigation Bar nya masih tetap ada?

Nah, kali ini kita akan mempelajari bagaimana caranya agar di saat berpindah ke Screen/Page baru Bottom Navigation Bar nya tetap ada. Langkahnya tidak begitu sulit, pertama kita perlu menambahkan dependencies berikut pada pubspec.yaml

Jika sudah, pastikan setiap menambahkan dependencies ataupun ada perubahan di dalam file pubspec.yaml untuk selalu menjalankan pub get.
Semua dependencies yang di perlukan dapat di peroleh pada -> pub.dev

Selanjutnya kita membutuhkan file berikut :

Berikut untuk code file main.dart :

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

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: PageNavBottomBar(),
    );
  }
}

Pada main.dart ini kita langsung mengarahkan saat aplikasi running pertama kali akan langsung ke PageNavBottomBar().

Untuk code pada file nav_bottom_bar.dart kita akan menggunakan yang telah kita tambahkan di depencies sebelumnya yaitu widget CustomScaffold, jadi widget ini lah yang akan terus menampilkan NavBottomBar meski sudah berpindah page. Adapun untuk code nya seperti berikut :

import 'package:custom_top_navigator/custom_navigation.dart';

class PageNavBottomBar extends StatefulWidget {
  const PageNavBottomBar({Key? key}) : super(key: key);

  @override
  State<PageNavBottomBar> createState() => _PageNavBottomBarState();
}

class _PageNavBottomBarState extends State<PageNavBottomBar> {
  int currentPageIndex = 0;

  final List<Widget> _listPage = [
    PagePertama(),
    PageKedua(),
  ];

  void Tap(int value) {
    setState(() {
      currentPageIndex = value;
    });
  }

  @override
  Widget build(BuildContext context) {
    return CustomScaffold(
      children: _listPage,
      onItemTap: Tap,
      scaffold: Scaffold(
        bottomNavigationBar: BottomNavigationBar(
          backgroundColor: Colors.blue,
          currentIndex: currentPageIndex,
          onTap: Tap,
          selectedItemColor: Colors.amber,
          showUnselectedLabels: true,
          unselectedItemColor: Colors.grey,
          items: [
            BottomNavigationBarItem(
              icon: Icon(Icons.home_sharp, ),
              label: 'Page 1',
            ),
            BottomNavigationBarItem(
              icon: Icon(Icons.view_compact_outlined,),
              label: 'Page 2',
            ),
          ],
        ),
      ),
    );
  }
}

Berikut code untuk file page1.dart :

class PagePertama extends StatefulWidget {
  const PagePertama({Key? key}) : super(key: key);

  @override
  _PagePertamaState createState() => _PagePertamaState();
}

class _PagePertamaState extends State<PagePertama> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
      ),
      body: Container(
        child: Center(
          child: MaterialButton(
            onPressed: (){
              Navigator.push(context, MaterialPageRoute(builder: (_)=>PageSatuDua()));
            },
            color: Colors.amber,
            child: Text('Move to Page 1.2'),
          ),
        ),
      ),
    );
  }
}

File page1.2.dart :

class PageSatuDua extends StatefulWidget {
  const PageSatuDua({Key? key}) : super(key: key);

  @override
  _PageSatuDuaState createState() => _PageSatuDuaState();
}

class _PageSatuDuaState extends State<PageSatuDua> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: Container(
          child: Center(
            child: Text('Page Satu Dua'),
          ),
        ),
      ),
    );
  }
}

Untuk page2.dart code nya seperti berikut :

class PageKedua extends StatefulWidget {
  const PageKedua({Key? key}) : super(key: key);

  @override
  _PageKeduaState createState() => _PageKeduaState();
}

class _PageKeduaState extends State<PageKedua> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Container(
          child: Center(
            child: Text('Page 2'),
          ),
        ),
      ),
    );
  }
}

Berikut hasil running saat program di jalankan :