currentIndex具有onPressed函数

时间:2020-09-16 07:50:14

标签: flutter indexing

我正在制作一个Flutter应用程序,并且正在底部导航栏上工作,我想知道是否可以通过按钮将用户从应用程序重定向到新页面UI。我使用了这个'package:bubble_bottom_bar / bubble_bottom_bar.dart”,当用户按下图标时,我不知道如何校准currentIndex = 1,2、3、4重定向到新页面。我试图将onPressed动作添加到我的BubbleBottomBarItem中,但是它不起作用。 这是我正在使用的代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:tariffo/favoriteProviders.dart';
import 'package:tariffo/messages_list.dart';
import 'package:bubble_bottom_bar/bubble_bottom_bar.dart';
import 'HomePage.dart';

class BarDetail extends StatefulWidget {
  @override
  _BarDetailState createState() => _BarDetailState();
}

class _BarDetailState extends State<BarDetail> {
  int currentIndex;
  @override
  void initState() {
    super.initState();
    currentIndex = 0;
  }

  changePage(int index) {
    setState(() {
      currentIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.8),
      child: BubbleBottomBar(
        opacity: 0.2,
        backgroundColor: Colors.white,
        borderRadius: BorderRadius.vertical(top: Radius.circular(16.0)),
        currentIndex: currentIndex,
        hasInk: true,
        inkColor: Colors.black12,
        hasNotch: true,
        fabLocation: BubbleBottomBarFabLocation.end,
        onTap: changePage,
        items: <BubbleBottomBarItem>[
          BubbleBottomBarItem(
              backgroundColor: Colors.red,
              icon: Icon(Icons.dashboard, color: Colors.black),
              activeIcon: Icon(Icons.dashboard, color: Colors.red),
              title: Text("Home")),
          BubbleBottomBarItem(
              backgroundColor: Colors.red,
              icon: Icon(Icons.favorite_border, color: Colors.black),
              activeIcon: Icon(Icons.dashboard, color: Colors.red),
              title: Text("Saved")),
          BubbleBottomBarItem(
              backgroundColor: Colors.red,
              icon: Icon(Icons.search, color: Colors.black),
              activeIcon: Icon(Icons.dashboard, color: Colors.red),
              title: Text("Search")),
          BubbleBottomBarItem(
              backgroundColor: Colors.red,
              icon: Icon(Icons.send, color: Colors.black),
              activeIcon: Icon(Icons.dashboard, color: Colors.red),
              title: Text("Messages")),
        ],
      ),
      
    );
  }
}

这是我要打开按钮的页面:FavoriteProviders(),MessageList()

2 个答案:

答案 0 :(得分:0)

您应该具有以下内容:

  1. 页面列表:

    final List<Widget> _pages = [
      FavoriteProviders(),
      MessageList()
    ];
    
  2. 一个Scaffold的{​​{1}}

    body: _pages[currentIndex],

其中@override Widget build(BuildContext context) { return Scaffold( bottomNavigationBar: _bubbleBottomNavBar(), body: _pages[currentIndex], ) } 是您的底部栏。

OR

_bubbleBottomNavBar()函数替换为:

onTap

答案 1 :(得分:0)

另一种解决方法是使用import java.util.Random; import java.util.stream.*; class CFG { public static void main(String[] args) { test(4, 10); } public static void test(int x, int n) { Random random = new Random(); int countX = 1 + random.nextInt(x); String str = random .ints(1, n + 1) .distinct() .limit(n) .mapToObj(i -> i <= countX ? "X" : "O") .collect(Collectors.joining("\n")); System.out.println(str); } } ,创建一个X O O X O O O O X O 并将其分配给名为PageView的{​​{1}}的属性。

控制器-PageController

PageView本身

PageView

所以controller现在是索引0,而PageController _controller = PageController();现在是索引1 您可以在onTap中使用其中之一来导航到该页面

PageView( controller: _controller; children: <Widget>[ FavoriteProviders(), MessageList() ] ) FavoriteProviders()

传入所需的持续时间和曲线。