【发布时间】:2021-07-02 13:04:56
【问题描述】:
我在运行我的 Flutter 应用(在设备上)时遇到此错误
NoSuchmethodError:参数不匹配的闭包调用:函数 '_HomeViewState.onTap' 接收者:关闭:(int)=> 动态来自 功能'onTap':。尝试调用:_HomeViewState.onTap() 发现: _HomeViewState.onTap(int) => 动态
这里是 login_view_model.dart 文件,我认为我遇到了错误:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:page_transition/page_transition.dart';
import 'package:student_community/core/services/authentication.dart';
import 'package:student_community/meta/views/home_view/home_view.dart';
import 'package:student_community/meta/views/login_view/login_view.dart';
class LoginViewModel extends ChangeNotifier {
int noOfUsers = 0;
String userName, userImage;
String get getUserName => userName;
String get getUserImage => userImage;
final AuthenticationService authenticationService = AuthenticationService();
navigateToHomeView(BuildContext context) {
logIn().whenComplete(() {
Navigator.pushReplacement(
context,
PageTransition(
child: HomeView(), type: PageTransitionType.bottomToTop));
});
}
Future logIn() async {
try {
await authenticationService.signInWithGoogle().then((user) {
if (user.uid != null) {
userName = user.displayName;
userImage = user.photoURL;
print(userName);
}
});
} catch (e) {
if (e is FirebaseAuthException) {
// Show Error Widget
print(e.message);
}
}
}
Future logOut(BuildContext context) async {
try {
await authenticationService.signInWithGoogle().whenComplete(() {
Navigator.pushReplacement(
context,
PageTransition(
child: LoginView(), type: PageTransitionType.bottomToTop));
});
} catch (e) {
if (e is FirebaseAuthException) {
// Show Error Widget
print(e.message);
}
}
}
}
我认为上面的代码格式不正确。 请原谅我,因为我是 Stackoverflow 的新手。
这是我的“home_view.dart”文件:
import 'package:provider/provider.dart';
import 'package:student_community/app/constants/colors.dart';
import 'package:student_community/app/constants/dimensions.dart';
import 'package:student_community/core/viewmodels/login_view_model.dart';
import 'package:student_community/meta/views/blogs_view/blogs_view.dart';
import 'package:student_community/meta/views/home_view/home_view_widgets.dart';
import 'package:student_community/meta/views/podcasts_view/podcasts_view.dart';
import 'package:student_community/meta/views/video_view/video_view.dart';
import 'package:student_community/meta/widgets/app_bar.dart';
class HomeView extends StatefulWidget {
@override
_HomeViewState createState() => _HomeViewState();
}
class _HomeViewState extends State<HomeView> {
int index = 0;
PageController pageController = PageController();
onTap(int i) {
setState(() {
index = i;
});
pageController.jumpToPage(index);
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: bgColorFaint,
drawer: Drawer(),
resizeToAvoidBottomInset: false,
appBar: appbar(titleText: 'Student Community', leadingWidget: null, actions: [
IconButton(onPressed: () {}, icon: Icon(Icons.message)),
IconButton(onPressed: () {}, icon: Icon(Icons.notifications)),
hSizedBox1,
GestureDetector(
onTap: () {
Provider.of<LoginViewModel>(context, listen: false).logOut(context);
},
child: CircleAvatar(
backgroundImage: NetworkImage(
Provider.of<LoginViewModel>(context, listen: false)
.getUserImage),
),
)
]),
body: PageView(
controller: pageController,
onPageChanged: (int pageIndex) {
setState(() {
index = pageIndex;
});
},
children: [
BlogsView(),
VideoView(),
PodcastsView(),
],
),
bottomNavigationBar: bottomAppBar(index, onTap),
);
}
}
这是我的“home_view_widgets”,其中有我的“bottomAppBar”小部件:
import 'package:custom_navigation_bar/custom_navigation_bar.dart';
import 'package:eva_icons_flutter/eva_icons_flutter.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:student_community/app/constants/colors.dart';
Widget bottomAppBar(int index, Function onTap) {
return CustomNavigationBar(
strokeColor: yellowColor,
scaleFactor: 0.2,
scaleCurve: Curves.bounceIn,
bubbleCurve: Curves.ease,
currentIndex: index,
onTap: onTap(),
selectedColor: yellowColor,
backgroundColor: darkColor,
items: [
CustomNavigationBarItem(icon: Icon(EvaIcons.menuOutline)),
CustomNavigationBarItem(icon: Icon(EvaIcons.video)),
CustomNavigationBarItem(icon: Icon(EvaIcons.speaker)),
]);
}
【问题讨论】:
-
请在此处添加您的 UI。认为您在 UI 的 onTap() 方法中调用了 Issue
-
请帮帮我。
-
添加您的
bottomAppBar小部件代码 -
我已经添加了我的
bottomAppBar小部件代码。
标签: flutter