Persisent navbar

This commit is contained in:
NATHANIEL ENDICK
2023-02-25 18:15:14 -05:00
parent f6aa8340f5
commit 87868cee4d
3 changed files with 135 additions and 62 deletions

View File

@@ -1,31 +1,10 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:ruswipeshare/main.dart';
import 'package:flutter/material.dart';
class HomeScreen extends StatelessWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context) {
return const StatefulHome();
}
}
class StatefulHome extends StatefulWidget {
const StatefulHome({super.key});
@override
State<StatefulHome> createState() => _StatefulHomeState();
}
class _StatefulHomeState extends State<StatefulHome> {
int _selectedIndex = 0;
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
@@ -46,32 +25,48 @@ class _StatefulHomeState extends State<StatefulHome> {
],
),
),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
backgroundColor: Colors.red,
selectedItemColor: Colors.black,
unselectedItemColor: Colors.black54,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.shopping_cart),
label: 'Buy',
),
BottomNavigationBarItem(
icon: Icon(Icons.attach_money),
label: 'Sell',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
label: 'Settings',
),
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,
),
bottomNavigationBar: MyNavBar(),
);
}
}
// class _HomeScreenState extends State<HomeScreen> {
// int _selectedIndex = 0;
// void _onItemTapped(int index) {
// if (_selectedIndex == index) return;
// setState(() {
// _selectedIndex = index;
// });
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => pages.elementAt(index)),
// );
// }
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// appBar: AppBar(
// title: const Text('FlutterFire UI'),
// ),
// body: Center(
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// const Text('You are logged in!'),
// ElevatedButton(
// onPressed: () {
// FirebaseAuth.instance.signOut();
// },
// child: const Text('Sign out'),
// ),
// ],
// ),
// ),
// bottomNavigationBar: const MyNavBar(),
// );
// }
// }

View File

@@ -1,15 +1,16 @@
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:ruswipeshare/home.dart';
import 'package:ruswipeshare/sell.dart';
import 'firebase_options.dart';
import 'authGate.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.android,
);
// WidgetsFlutterBinding.ensureInitialized();
// await Firebase.initializeApp(
// options: DefaultFirebaseOptions.android,
// );
runApp(const MyApp());
}
@@ -21,7 +22,66 @@ class MyApp extends StatelessWidget {
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const AuthGate(),
home: const HomeScreen(),
);
}
}
class MyNavBar extends StatefulWidget {
MyNavBar({super.key});
@override
State<MyNavBar> createState() => MyNavBarState();
}
class MyNavBarState extends State<MyNavBar> {
final pages = [
const SellScreen(),
const SellScreen(),
];
int _selectedIndex = 0;
void _onItemTapped(int index) {
if (runtimeType == pages.elementAt(index).runtimeType) return;
setState(() {
_selectedIndex = index;
});
Navigator.push(
context,
MaterialPageRoute(builder: (context) => pages.elementAt(index)),
);
}
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
type: BottomNavigationBarType.fixed,
backgroundColor: Colors.red,
selectedItemColor: Colors.black,
unselectedItemColor: Colors.black54,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.shopping_cart),
label: 'Buy',
),
BottomNavigationBarItem(
icon: Icon(Icons.attach_money),
label: 'Sell',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
BottomNavigationBarItem(
icon: Icon(Icons.settings),
label: 'Settings',
),
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,
);
}
}

18
lib/sell.dart Normal file
View File

@@ -0,0 +1,18 @@
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:ruswipeshare/home.dart';
import 'package:ruswipeshare/main.dart';
class SellScreen extends StatelessWidget {
const SellScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: const Text("Hi"),
),
bottomNavigationBar: MyNavBar(),
);
}
}