gpt4 book ai didi

Flutter PageView 在 null 上调用了 jumpToPage 方法

转载 作者:行者123 更新时间:2023-12-03 03:22:57 25 4
gpt4 key购买 nike

我是 dart 的新手,我尝试实现一个 BottomNaviagtor。我想在点击 BottomNavigatorItem 时跳转到特定页面。

下面是我得到的错误:

I/flutter(2447):══╡手势异常╞═══════════════════════════════ ═══════════════════════════════════

I/flutter ( 2447): 处理手势时抛出以下 NoSuchMethodError :

I/flutter ( 2447): 方法 'jumpToPage' 被调用为 null。

I/flutter ( 2447): 接收器:null

I/flutter ( 2447): 尝试调用:jumpToPage(2)

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:skypeclone/utils/universal_variables.dart';

class HomeScreen extends StatefulWidget {
@override
_HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
PageController pageController;
int _page = 0;

@override
void initState() {
super.initState();
pageController = PageController();
}

void onPageChanged(int page) {
setState(() {
_page = page;
});
}

void navigationTapped(int page) {
pageController.jumpToPage(page);
}

@override
Widget build(BuildContext context) {
double _labelFontSize = 10;

return Scaffold(
backgroundColor: UniversalVariables.blackColor,
body: PageView(
children: <Widget>[
Center(
child: Text(
"Chat List Screen",
style: TextStyle(color: Colors.white),
)),
Center(
child: Text(
"Call Logs",
style: TextStyle(color: Colors.white),
)),
Center(
child: Text(
"Contact Screen",
style: TextStyle(color: Colors.white),
)),
],
controller: pageController,
onPageChanged: onPageChanged,
),
bottomNavigationBar: Container(
child: Padding(
padding: EdgeInsets.symmetric(vertical: 10),
child: CupertinoTabBar(
backgroundColor: UniversalVariables.blackColor,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.chat,
color: (_page == 0)
? UniversalVariables.lightBlueColor
: UniversalVariables.greyColor),
title: Text(
"Chats",
style: TextStyle(
fontSize: _labelFontSize,
color: (_page == 0)
? UniversalVariables.lightBlueColor
: Colors.grey),
),
),
BottomNavigationBarItem(
icon: Icon(Icons.call,
color: (_page == 1)
? UniversalVariables.lightBlueColor
: UniversalVariables.greyColor),
title: Text(
"Calls",
style: TextStyle(
fontSize: _labelFontSize,
color: (_page == 1)
? UniversalVariables.lightBlueColor
: Colors.grey),
),
),
BottomNavigationBarItem(
icon: Icon(Icons.contact_phone,
color: (_page == 2)
? UniversalVariables.lightBlueColor
: UniversalVariables.greyColor),
title: Text(
"Contacts",
style: TextStyle(
fontSize: _labelFontSize,
color: (_page == 2)
? UniversalVariables.lightBlueColor
: Colors.grey),
),
),
],
onTap: navigationTapped,
currentIndex: _page,
),
),
),
);
}
}

最佳答案

PageController _controller = PageController(
initialPage: 0,
);

不应该在 Controller 中声明 initialPage 吗?而且你还需要处理 Controller ,比如

@override
void dispose() {
_controller.dispose();
super.dispose();
}

关于Flutter PageView 在 null 上调用了 jumpToPage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61223181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com