почему строитель в флаттер ломается здесь - PullRequest
0 голосов
/ 25 февраля 2020

Я исправил свой первый набор ошибок сегодня, но теперь в этой строке код ломается, и я не могу понять это

вот плохая строка кода в вопросе

builder: (BuildContext context) {... }

Вот ошибка:

Сообщение компилятора: lib / main.dart: 11: 5: Ошибка: нет именованного параметра с именем «строитель». строитель: (контекст BuildContext) {^^^^^^^ ../../Downloads/flutter_windows_v1.12.13+hotfix.8-stable/src/flutter/.pub-cache/hosted/pub.dartlang.org/provider -4.0.4 / lib / src / change_notifier_provider.dart: 107: 3: Контекст: найден этот кандидат, но аргументы не совпадают. ChangeNotifierProvider ({^^^^^^^^^^^^^^^^^^^^^^ Ошибка целевого ядра: исключение: ошибки при создании моментального снимка: сбой нулевой сборки.

FAILURE : Сбой сборки с исключением.

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'home_page.dart';
import 'auth.dart';
import 'login_page.dart';

void main() => runApp(
  ChangeNotifierProvider<AuthService>(
    child: MyApp(),
    builder: (BuildContext context) {
      return AuthService();
    },
  ),
);

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: FutureBuilder<FirebaseUser>(
        future: Provider.of<AuthService>(context).getUser(),
        builder: (context, AsyncSnapshot<FirebaseUser> snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            // log error to console
            if (snapshot.error != null) {
              print("error");
              return Text(snapshot.error.toString());
            }

            // redirect to the proper page
            return snapshot.hasData ? HomePage(snapshot.data) : LoginPage();
          } else {
            // show loading indicator
            return LoadingCircle();
          }
        },
      ),
    );
  }
}

class LoadingCircle extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        child: CircularProgressIndicator(),
        alignment: Alignment(0.0, 0.0),
      ),
    );
  }

1 Ответ

1 голос
/ 25 февраля 2020

ChangeNotifierProvider не имеет свойства builder. Вы хотите использовать свойство create:

ChangeNotifierProvider<AuthService>(
  create: (context) => AuthService(),
  child: MyApp(),
},

( документация )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...