我正在制作一个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()
答案 0 :(得分:0)
您应该具有以下内容:
页面列表:
final List<Widget> _pages = [
FavoriteProviders(),
MessageList()
];
一个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()
传入所需的持续时间和曲线。