微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何解决 Flutter Provider 调试错误

如何解决我如何解决 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 举报,一经查实,本站将立刻删除。