Home > Blockchain >  my floating action button in flutter is behind my navbar
my floating action button in flutter is behind my navbar

Time:02-03

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],
                          );
                        },
                      ),
                    ),
                  );
                },
              ),
            ),
          ),
        ),
      ),
    );
  }
}
  •  Tags:  
  • Related