第二次点击后滚动到另一个屏幕的顶部



我有一个应用程序,如果用户单击主页按钮,我想在主页中添加滚动到顶部,并且我有两个屏幕,其中1。索引页面(在这里我使用底部导航小部件导航到不同的屏幕(和2。主页这是用户访问应用时导航到的第一个索引

索引页

List<Widget> selectedScreen;
PageController _pageController;
int _selectedIndex;
@override
void initState() {
super.initState();
_selectedIndex = 0;
selectedScreen = [
HomePage(),
BooksScreen(),
NotificationScreen(),
];
_pageController = PageController(initialPage: _selectedIndex);
}
@override
void dispose() {
_pageController.dispose();
super.dispose();
}
///...
body: PageView(
controller: _pageController,
children: selectedScreen,
),
bottomNavigationBar: BottomNavigationBar(
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(              //This is the home button which navigates to HomePage()
icon: Icon(Icons.home_rounded),  //This is the home button which navigates to HomePage()
label: "",                       //This is the home button which navigates to HomePage()
),
//item 2
//item 3
],
currentIndex: _selectedIndex,
onTap: _onItemTapped,        
),

///...
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
_pageController.jumpToPage(index);

});
}

主页

///...
class _HomePageState extends State<HomePage>
with AutomaticKeepAliveClientMixin<HomePage> {
@override
bool get wantKeepAlive => true;
@override
Widget build(BuildContext context) {
super.build(context);
return Scaffold(
backgroundColor: Colors.grey[300],
body: SafeArea(
child: ListView(children: [
///...

但我不知道该怎么做,因为如果我在第二个屏幕上点击主页按钮,我希望滚动到顶部什么都不做,因为主屏幕有一个持久的滚动,这意味着当你离开页面回来时,它会保持原样,但如果用户在主页上单击主页按钮,那么我希望主页滚动到top就像facebook、youtube、quora和其他应用程序一样。

请告诉我该怎么做,如果你不明白,你可以要求我解释更多

将其添加到您的方法中:

void _onItemTapped(int index) {
if(index == _selectedIndex && index == 1){
controller.animateTo(0, Duration());
}
setState(() {
_selectedIndex = index;
_pageController.jumpToPage(index);

});
}

并在ListView 中使用ScrollController(控制器(

最新更新