我不能使用弯曲导航栏在Flutter,当我滑动屏幕,所以弯曲导航栏的按钮也在移动,但当我点击弯曲导航栏的按钮什么也没有发生.我认为**onTap()**没有正常工作。当我点击按钮时如何导航页面?这是我的程序代码=>
static final String id = 'profile_page';
@override
_PagesState createState() => _PagesState();
}
class _PagesState extends State<Pages> {
PageController _pageController;
int _Page=0;
@override
void initState() {
super.initState();
_pageController = PageController();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageView(
controller: _pageController,
children: <Widget>[
Search(),
Trending(),
Friends(),
Profile(),
],
onPageChanged: (int index) {
setState(() {
_pageController.jumpToPage(index);
});
}
),
bottomNavigationBar: CurvedNavigationBar(
animationCurve: Curves.easeInOutBack,
index:3,
items: <Widget>[
Icon(Icons.search, size: 30, color: Colors.white, ),
Icon(Icons.trending_up, size: 30, color: Colors.white),
Icon(Icons.group, size: 30, color: Colors.white),
Icon(Icons.person, size: 30, color: Colors.white)
],
color: Colors.blueAccent,
backgroundColor: Colors.white,
height: 60.0,
onTap: (int index) {
setState(() {
_pageController.jumpToPage(index);
});
},
),
);
}
}
3条答案
按热度按时间ivqmmu1c1#
我是这样用的:
1.创建一个列表和一个保存当前页码的变量。这里有3个类可以是无状态的或有状态的小部件。
1.像这样定义你的身体:
1.然后在onTap中:
希望能帮上忙!Happy Coding:)
qvsjd97n2#
如果您更改了
PageView
的页面,则是在告诉CurvedNavigationBar
更改其页面。但是,当您更改CurvedNavigationBar
的页面时,您并没有告诉PageView
更改其页面。您需要将
PageController
添加到PageView
,如下所示:你应该能够做到这一点:
但要确保当你告诉一个人改变另一个人的页面时,另一个人不会再告诉第一个人改变它的页面,因为这将是一个无限循环。
aij0ehis3#
只需将
_pageController = PageController();
替换为final _pageController = PageController();
并在 void initState() 方法中删除
_pageController = PageController();
。没有使用
int _Page=0;
你会没事的。