Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:bencana/missing_list.dart';
- import 'package:flutter/material.dart';
- import 'package:bencana/constants.dart';
- import 'package:bencana/home.dart';
- import 'package:bencana/disaster_page.dart';
- import 'package:bencana/missing_page.dart';
- import 'package:bencana/authentication.dart';
- import 'package:firebase_auth/firebase_auth.dart';
- import 'dart:async';
- import 'package:bencana/post_add.dart';
- import 'package:bencana/disaster_add.dart';
- import 'package:bencana/missing_add.dart';
- import 'package:bencana/profile_page.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.teal,
- ),
- // home: MyHomePage(title: 'Flutter Demo Home Page'),
- home: DashboardScreen(),
- );
- }
- }
- class DashboardScreen extends StatefulWidget {
- // 1. Deklarasikan parameter untuk DashboardScreen
- @override
- _DashboardScreenState createState() => _DashboardScreenState();
- }
- enum AuthStatus { signIn, notSignIn }
- class _DashboardScreenState extends State<DashboardScreen> {
- // 2. deklarasikan page controller dan initial page
- PageController _pageController;
- int _page = 0;
- AuthStatus _authStatus = AuthStatus.signIn;
- // 3. Inisialisasi page controller pada init state
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- _pageController = PageController();
- getCurrentUser().then((userId) {
- setState(() {
- _authStatus = userId == null ? AuthStatus.notSignIn : AuthStatus.signIn;
- });
- });
- }
- // 4. Buang page controller jika tidak dibutuhkan lagi
- @override
- void dispose() {
- // TODO: implement dispose
- super.dispose();
- _pageController.dispose();
- }
- // 5. Animasi perpindahan antar page
- void navigationTapped(int page) {
- _pageController.animateToPage(
- page,
- duration: const Duration(milliseconds: 300),
- curve: Curves.ease,
- );
- }
- // 6. Tangani perpindahan page
- void onPageChanged(int page) {
- setState(() {
- this._page = page;
- });
- }
- // 7. Deklarasikan list untuk menu item di file Constants.dart
- // 8. Siapkan aksi untuk pilihan menu item
- void selectedAction(String choice) {
- print('You choose: $choice');
- if (choice == Constants.signout) {
- signOut();
- } else if (choice == Constants.profile){
- Navigator.push(context,
- MaterialPageRoute(builder: (context) => ProfilePage()));
- }
- }
- Future<String> getCurrentUser() async {
- try {
- FirebaseUser user = await FirebaseAuth.instance.currentUser();
- return user.uid;
- } catch (e) {
- print('Error: $e');
- return null;
- }
- }
- void signOut() async {
- try {
- FirebaseAuth.instance.signOut();
- setState(() {
- _authStatus = AuthStatus.notSignIn;
- });
- } catch (e) {
- print('Error: $e');
- }
- }
- @override
- Widget build(BuildContext context) {
- switch (_authStatus) {
- case AuthStatus.notSignIn:
- return AuthenticationPage();
- case AuthStatus.signIn:
- return Scaffold(
- appBar: AppBar(
- title: Text(
- 'B-Alert',
- ),
- actions: <Widget>[
- PopupMenuButton<String>(
- onSelected: selectedAction,
- itemBuilder: (BuildContext context) {
- return Constants.choices.map((String choice) {
- return PopupMenuItem<String>(
- value: choice,
- child: Text(choice),
- );
- }).toList();
- },
- ),
- ],
- ),
- body: PageView(
- children: <Widget>[
- HomePage(),
- DisasterPage(),
- MissingList(),
- ],
- onPageChanged: onPageChanged,
- controller: _pageController,
- ),
- floatingActionButton: FloatingActionButton(
- onPressed: () {
- // Set FAB sesuai dengan page
- switch (_page) {
- case 0:
- Navigator.push(
- context,
- MaterialPageRoute(builder: (context) => PostAdd()),
- );
- break;
- case 1:
- Navigator.push(
- context,
- MaterialPageRoute(builder: (context) => DisasterAdd()),
- );
- break;
- case 2:
- // Navigator.push(
- // context,
- // MaterialPageRoute(builder: (context) => MissingAdd()),
- // );
- break;
- }
- },
- child: Icon(Icons.add),
- ),
- bottomNavigationBar: Theme(
- data: Theme.of(context).copyWith(
- canvasColor: Colors.teal[100],
- ),
- child: BottomNavigationBar(
- items: [
- BottomNavigationBarItem(
- icon: Icon(Icons.announcement),
- title: Text('News'),
- ),
- BottomNavigationBarItem(
- icon: Icon(Icons.warning),
- title: Text('Disaster'),
- ),
- BottomNavigationBarItem(
- icon: Icon(Icons.people),
- title: Text('Missing'),
- ),
- ],
- onTap: navigationTapped,
- currentIndex: _page,
- fixedColor: Colors.teal,
- ),
- ),
- );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement