我无法在颤动中使用弯曲的导航栏,当我滑动屏幕时,弯曲的导航栏的按钮也会移动,但是当我点击弯曲的导航栏的按钮时,什么也没有发生。我认为 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);
});
},
),
);
}
}
答案 0 :(得分:1)
只需更换
_pageController = PageController();
和
final _pageController = PageController();
并在 void initState()方法中删除_pageController = PageController();
。
不使用int _Page=0;
您会没事的。
答案 1 :(得分:0)
如果您更改PageView
的页面,则是告诉CurvedNavigationBar
更改其页面。但是,当您更改CurvedNavigationBar
的页面时,并没有告诉PageView
更改其页面。
您需要将PageController
添加到PageView
,如下所示:
final _pageController = PageController();
PageView(
controller: _pageController,
...
那么您应该能够做到这一点:
_pageController.jumpToPage(index);
但是请确保当您告诉一个人更改另一个人的页面时,另一个人不会再告诉第一个更改其页面,因为这将是一个无限循环。
答案 2 :(得分:0)
我以这种方式使用它:
创建一个列表和一个变量,以保存当前的页码。这里的3个类可以是无状态或有状态的小部件。
CASE [Table Name]
WHEN "Events" THEN [Split 1]
WHEN "Events1" THEN [Split 2]
WHEN "Events2" THEN [Split 3]
...
WHEN "Events5" THEN [Split 6]
END
像这样定义你的身体:
final List<Widget> _tabItems = [Class1(), Class2(), Class3()];
int _activePage = 0;
然后在您的onTap中
body: _tabItems[_activePage], //Customise it as you want.
希望有帮助!快乐编码:)