我已经使用容器创建了底部导航栏 这是它的代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:installement1_app/screens/Dashboard.dart';
import 'package:installement1_app/screens/customersScreen.dart';
import 'package:installement1_app/theme/Colors.dart';

class bottomNavBar extends StatefulWidget {
  const bottomNavBar({super.key});

  @override
  State<bottomNavBar> createState() => _bottomNavBarState();
}

class _bottomNavBarState extends State<bottomNavBar> {
  @override
  Widget build(BuildContext context) {
    bool isHomeScreen = false;
    bool isCustomersScreen = false;
    Size size = MediaQuery.of(context).size;
    return Padding(
      padding: EdgeInsets.only(
          left: size.width * 0.04,
          right: size.width * 0.06,
          bottom: size.width * 0.06),
      child: Container(
        decoration: BoxDecoration(
            color: Colors.white, borderRadius: BorderRadius.circular(27)),
        height: size.height * 0.07,
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            Container(
              decoration:
                  BoxDecoration(shape: BoxShape.circle, color: primaryBlue),
              child: IconButton(
                  onPressed: () {},
                  icon: Icon(
                    Icons.add_rounded,
                    color: Colors.white,
                    size: size.width * 0.08,
                  )),
            ),
            IconButton(
              onPressed: () {
                if (!isHomeScreen) {
                  Navigator.push(
                      context,
                      MaterialPageRoute(
                          builder: (context) => DashboardScreen()));
                }
              },
              icon: SvgPicture.asset('assets/images/homeIcon.svg'),
            ),
            IconButton(
              onPressed: () {
                Navigator.push(context,
                    MaterialPageRoute(builder: (context) => CustomersScreen()));
              },
              icon: SvgPicture.asset('assets/images/usersIcon.svg'),
            ),
            IconButton(
              onPressed: () {},
              icon: SvgPicture.asset('assets/images/qrCodeIcon.svg'),
            ),
            IconButton(
              onPressed: () {},
              icon: SvgPicture.asset('assets/images/walletIcon.svg'),
            ),
            IconButton(
              onPressed: () {},
              icon: SvgPicture.asset('assets/images/settingsicon.svg'),
            ),
          ],
        ),
      ),
    );
  }
}

现在我已经将这个小部件传递给了BottomNavBar

  bottomNavigationBar: const bottomNavBar(),

现在导航功能正常工作,我可以在不同的页面之间导航, 但当我在页面上时,我们可以说CustomerPage: 应该发生的是,当我点击导航到我已经在页面上的按钮时,导航器不应该导航,因为我已经在该按钮所指向的页面上 但在我的例子中,当我在CustomerPage上并点击指向CustomersPage的图标按钮时,导航器会再次导航到同一页面,这意味着我可以看到导航动画 在BottomAppBar中,我们可以使用索引和BottomNavBar项来控制这一点,但如果我使用一个容器创建了一个底部导航栏,那怎么可能呢?

推荐答案

BottomNavigationBar可能是一个解决方案吗?

https://api.flutter.dev/flutter/material/BottomNavigationBar-class.html

Flutter相关问答推荐

在Flutter 中将参数从一个类传递到另一个类

我有一个问题:类型';()=>;Null';不是类型转换中类型';(Int)=>;void';的子类型

如何删除使用isscllable时出现的左边距?

为什么我的页面控制器在使用Riverpod时没有更改我的页面视图?

我想创建一个可滚动的堆叠列表项,每个项都朝向屏幕

使用Ffltter CREATE创建项目时,androidManifest.xml中缺少包属性

Flutter Android Google Sign-in error:ApiException:10在确认软件包名称、SHA-1 fingerprint 和设置同意页面后出现异常

使用 forLoops 在 Dart 中进行单元测试会返回 stackoverflow

在带有 flutter 的 Native Android 中,EventChannel.EventSink 始终为 null

TextField 中的富文本并获取 RenderParagraph

使用 Flutter 和 Dio 将图像上传到 API

无状态和有状态小部件,我可以同时使用吗?

文本溢出文本框 - Flutter

通过一个具体的例子理解Flutter约束的本质

如何将金钱格式化为数以百万计的Flutter 动?

如何验证非表单字段?

使用 Firebase/Flutter 进行应用判断 - 100% 无效请求

有没有办法帮助我修复类型 null 不是 Map 类型的子类型?

如何从dart 中的当前日期时间中减go 1 天?

Flutter:如何将 AssetImage 转换为 Unit8List?