My FLoatingActionBarLocation is on a wrong place, I want it to be on top of the navbar. the location of the FloatingActionBar is on the collection_page.dart because i want it to only appear on this page. (btw, this is my first time using stack overflow)
collection_page.dart
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:list_list_2/constants/color_constant.dart';
class CollectionPage extends StatefulWidget {
final int index;
CollectionPage(this.index);
@override
State<CollectionPage> createState() => _CollectionPageState();
}
class _CollectionPageState extends State<CollectionPage> {
late OverlayEntry entry;
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: FloatingActionButton(
backgroundColor: lightRedColor,
child: const FaIcon(FontAwesomeIcons.plus),
onPressed: () {
Overlay.of(context)!.insert(entry);
},
),
floatingActionButtonLocation: FloatingActionButtonLocation.endFloat,
);
}
}
navbar.dart
// ignore_for_file: prefer_const_constructors, prefer_const_literals_to_create_immutables
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:list_list_2/constants/color_constant.dart';
import 'package:list_list_2/page/user_page/account/account_page.dart';
import 'package:list_list_2/page/user_page/auction/auction_page.dart';
import 'package:list_list_2/page/user_page/collection/collection_page.dart';
import 'package:list_list_2/page/user_page/home/home_page.dart';
import 'package:list_list_2/page/user_page/search/search_page.dart';
class PageNavbar extends StatefulWidget {
const PageNavbar({Key? key}) : super(key: key);
@override
State<PageNavbar> createState() => _PageNavbarState();
}
class _PageNavbarState extends State<PageNavbar> {
int _pages = 0;
List<Widget> initialWidgets = <Widget>[
HomePage(1),
SearchPage(2),
AuctionPage(3),
CollectionPage(4),
AccountPage(5),
];
@override
Widget build(BuildContext context) {
return Container(
color: powderBlue,
child: SafeArea(
top: false,
child: ClipRect(
child: Scaffold(
extendBody: true,
backgroundColor: defaultColor,
bottomNavigationBar: CurvedNavigationBar(
items: <Widget>[
Icon(Icons.home, size: 30),
FaIcon(FontAwesomeIcons.search, size: 30),
FaIcon(FontAwesomeIcons.gavel, size: 30),
Icon(Icons.collections, size: 30),
FaIcon(FontAwesomeIcons.solidUser, size: 30),
],
height: 55,
index: _pages,
backgroundColor: Colors.transparent,
color: powderBlue,
buttonBackgroundColor: blueGrey,
onTap: (int index) {
setState(() {
_pages = index;
});
},
),
body: Stack(
children: List<Widget>.generate(
initialWidgets.length,
(int index) {
return IgnorePointer(
ignoring: index != _pages,
child: Opacity(
opacity: _pages == index ? 1.0 : 0.0,
child: Navigator(
onGenerateRoute: (RouteSettings settings) {
return MaterialPageRoute(
builder: (_) => initialWidgets[index],
);
},
),
),
);
},
),
),
),
),
),
);
}
}
https://github.com/MonsterEat90/List-List this is my github project.
CodePudding user response:
You just need to Wrap your Scaffold with SafeArea in collection_page.dart
return SafeArea(
child: Scaffold(
floatingActionButtonLocation: FloatingActionButtonLocation.miniEndFloat,
backgroundColor: defaultColor,
floatingActionButton: FloatingActionButton(
backgroundColor: lightRedColor,
child: const FaIcon(FontAwesomeIcons.plus),
onPressed: () {
print("add button pressed");
},
),
),
);
CodePudding user response:
Change your Code to This :
// ignore_for_file: prefer_const_constructors, prefer_const_literals_to_create_immutables
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:list_list_2/constants/color_constant.dart';
import 'package:list_list_2/page/user_page/account/account_page.dart';
import 'package:list_list_2/page/user_page/auction/auction_page.dart';
import 'package:list_list_2/page/user_page/collection/collection_page.dart';
import 'package:list_list_2/page/user_page/home/home_page.dart';
import 'package:list_list_2/page/user_page/search/search_page.dart';
class PageNavbar extends StatefulWidget {
const PageNavbar({Key? key}) : super(key: key);
@override
State<PageNavbar> createState() => _PageNavbarState();
}
class _PageNavbarState extends State<PageNavbar> {
int _pages = 0;
List<Widget> initialWidgets = <Widget>[
HomePage(1),
SearchPage(2),
AuctionPage(3),
CollectionPage(4),
AccountPage(5),
];
@override
Widget build(BuildContext context) {
return SafeArea( //add SafeArea Here
child: Container(
color: powderBlue,
child: ClipRect(
child: Scaffold(
extendBody: true,
backgroundColor: defaultColor,
bottomNavigationBar: CurvedNavigationBar(
items: <Widget>[
Icon(Icons.home, size: 30),
FaIcon(FontAwesomeIcons.search, size: 30),
FaIcon(FontAwesomeIcons.gavel, size: 30),
Icon(Icons.collections, size: 30),
FaIcon(FontAwesomeIcons.solidUser, size: 30),
],
height: 55,
index: _pages,
backgroundColor: Colors.transparent,
color: powderBlue,
buttonBackgroundColor: blueGrey,
onTap: (int index) {
setState(() {
_pages = index;
});
},
),
body: Stack(
children: List<Widget>.generate(
initialWidgets.length,
(int index) {
return IgnorePointer(
ignoring: index != _pages,
child: Opacity(
opacity: _pages == index ? 1.0 : 0.0,
child: Navigator(
onGenerateRoute: (RouteSettings settings) {
return MaterialPageRoute(
builder: (_) => initialWidgets[index],
);
},
),
),
);
},
),
),
),
),
),
);
}
}
