Flutter-如何从底部菜单导航栏的第一个选项卡屏幕打开第二个屏幕

时间:2020-02-26 12:29:21

标签: flutter flutter-layout

我有一个主屏幕,底部有一个带有4个栏的标签栏。现在我要关注第一个标签栏。

第一个选项卡栏中显示了不同的类别,例如。如您在屏幕快照中看到的,有2个类别:

1)类别1(越野摩托车,道路和配件) 2)热门类别

现在,当我单击类别1中的任何一个时,我希望在底部显示选项卡栏(4个选项卡栏),但是当我打开热门类别时,我不需要该选项卡栏。

所以我被困在这里。

下面是我的代码段。

Scaffold(
      backgroundColor: Colors.white,
      body: GestureDetector(
        onTap: () {
          FocusScope.of(context).requestFocus(new FocusNode());
        },
        child: SafeArea(
          top: true,
          child: SizedBox.expand(
            child: PageView(
              physics: new NeverScrollableScrollPhysics(),
              controller: _pageController,
              onPageChanged: (index) {
                setState(() => currentIndex = index);
              },
              children: <Widget>[
                Products(),
                News(),
                Service(),
                Events(),
              ],
            ),
          ),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        elevation: 0,
        child: Image.asset('assets/icons/bottom_center.png'),
        backgroundColor: Colors.transparent,
        focusElevation: 10,
        disabledElevation: 10,
        highlightElevation: 10,
        onPressed: () {
          Navigator.push(context,
              MaterialPageRoute(builder: (BuildContext context) {
            return WorldCategories();
          }));
        },
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
      bottomNavigationBar: BottomNavigationBar(
          currentIndex: currentIndex,
          onTap: (index) {
            setState(() {
              currentIndex = index;
              _pageController.jumpToPage(index);
            });
          },
          items: [
            BottomNavigationBarItem(
                icon: Icon(Icons.ac_unit), title: Text("A")),
            BottomNavigationBarItem(
                icon: Icon(Icons.ac_unit), title: Text("X")),
            BottomNavigationBarItem(
                icon: Icon(Icons.ac_unit), title: Text("Y")),
            BottomNavigationBarItem(
                icon: Icon(Icons.ac_unit), title: Text("Z")),
          ]),
);

,并且floatActionButton设置在第二个屏幕的顶部。

enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

想法是您可以将GestureDetector用于“热门类别”文本,然后点击将其重定向到所需的页面。

 GestureDetector(
              onTap: () async {
              // here you make your navigation for your desired page
         Navigator.push(
              context,
              MaterialPageRoute(builder: (context) => youPage()),
             );
              },
              child: Padding(

                child: Text(
                  'Populat Categoreies',

                ),
              ))

答案 1 :(得分:0)

在产品内部添加两个布局,单击摩托车越野赛时,隐藏第一个布局并显示摩托车越野赛布局,并单击流行类别时 进行

之类的页面导航
var tokenDescriptor = new SecurityTokenDescriptor()
{
  Subject = new ClaimsIdentity(new System.Security.Claims.Claim[]
  {
    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.NameIdentifier,userFromRepo.Id.ToString()),
    new System.Security.Claims.Claim(System.Security.Claims.ClaimTypes.Name,userFromRepo.FullName)
  }),
  Expires = DateTime.Now.AddHours(12),
  SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha512Signature)
};