如何解决我如何解决 Flutter Provider 调试错误
我在 Flutter 代码 main.dart 文件中有一些错误。我创建了 AuthService 类,我在 main.dart 文件中创建了 Provider 方法,但是在调用 Provider 方法时出现了一些错误。我需要解决这个错误。 enter image description here
import 'package:Flutter/material.dart';
import 'package:trip/screen/first_screen.dart';
import 'package:trip/screen/sign_up_screen.dart';
import 'package:trip/services/auth_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return Provider(
auth: AuthService,child: MaterialApp(
title: 'Test FireBase',theme: ThemeData(
primarySwatch: Colors.green,),home: FirstScreen(),routes: <String,WidgetBuilder>{
'/signUp': (BuildContext context) => SignUpScreen(),'/home': (BuildContext context) => FirstScreen(),},);
}
}
class Provider extends InheritedWidget {
final AuthService auth;
Provider(Key key,Widget child,this.auth) : super(key: key,child: child);
@override
bool updateShouldNotify(InheritedWidget oldWidget) => true;
static Provider of(BuildContext context) =>
(context.dependOnInheritedWidgetofExactType<Provider>() as Provider);
}
解决方法
您收到错误是因为您创建的 Provider
构造函数使用的是位置参数,而不是命名的。有关命名和位置参数的更多信息,请查看 this post。
您可以更改构造函数以使用如下命名参数:
Provider({Key? key,required Widget child,required this.auth}) : super(key: key,child: child);
或者您可以像这样在构造函数调用中删除参数的命名:
return Provider(
UniqueKey(),MaterialApp(
...
),AuthService(),);
我更喜欢第一个解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。