Как исправить проблему AutoValidateMode в Flutter?

#firebase #flutter #firebase-authentication #flutter-layout #flutter-dependencies

#firebase #flutter #firebase-аутентификация #flutter-layout #flutter-зависимости

Вопрос:

Я создаю приложение для аутентификации по телефону с помощью Firebase и Flutter. Я не использую какое-либо поле формы, но я получаю сообщение об ошибке AutoValidateMode Not Found. Я искал решение в сети с 2 дней, но не смог его найти. Код выглядит следующим образом.

 import 'dart:async';

import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:sms_autofill/sms_autofill.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: MyHomePage(title: 'Phone Auth'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final FirebaseAuth _auth = FirebaseAuth.instance;

  final _scaffoldKey = GlobalKey<ScaffoldState>();

  final TextEditingController _phoneNumberController = TextEditingController();
  final TextEditingController _smsController = TextEditingController();
  String _verificationId;
  final SmsAutoFill _autoFill = SmsAutoFill();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        key: _scaffoldKey,
        resizeToAvoidBottomInset: false,
        body: Padding(
          padding: const EdgeInsets.all(8),
          child: Padding(
              padding: EdgeInsets.all(16),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                    TextFormField(
                    controller: _phoneNumberController,
                    decoration: const InputDecoration(
                        labelText: 'Phone number ( xx xxx-xxx-xxxx)'),
                  ),],
              )),
        ));
  }
}

 

Для этого кода я получаю сообщение об ошибке следующим образом.

 ../../../../.pub-cache/hosted/pub.dartlang.org/pin_input_text_field-3.3.0/lib/src/widget/pin_widget.dart:402:5: Error: Type 'AutovalidateMode' not found.
    AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
    ^^^^^^^^^^^^^^^^
../../../../.pub-cache/hosted/pub.dartlang.org/pin_input_text_field-3.3.0/lib/src/widget/pin_widget.dart:402:5: Error: 'AutovalidateMode' isn't a type.
    AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
    ^^^^^^^^^^^^^^^^
../../../../.pub-cache/hosted/pub.dartlang.org/pin_input_text_field-3.3.0/lib/src/widget/pin_widget.dart:402:41: Error: Getter not found: 'AutovalidateMode'.
    AutovalidateMode autovalidateMode = AutovalidateMode.disabled,
                                        ^^^^^^^^^^^^^^^^
../../../../.pub-cache/hosted/pub.dartlang.org/pin_input_text_field-3.3.0/lib/src/widget/pin_widget.dart:436:13: Error: No named parameter with the name 'autovalidateMode'.
            autovalidateMode: autovalidateMode,
            ^^^^^^^^^^^^^^^^

 

Как исправить эту проблему? Где редактировать AutoValidateMode , чтобы всегда?
Я очень благодарен за вашу помощь.

Комментарии:

1. Я подозреваю, что вы используете pub.dev/packages/pin_input_text_field , и, вероятно, он уже написан в ожидании нового протокола для AutovalidateMode. Вероятно, вам потребуется клонировать пакет и посмотреть, где было внесено изменение, и указать это в качестве верхней границы в вашем pubspec.yaml.

2. ОК… Я тоже попробую это. Я прочитал кое-что еще на github, что обновление до flutter версии 1.22 устранило проблему. Я также попробую ваше предложение. Спасибо

3. Спасибо @RandalSchwartz. Проблема решена путем обновления flutter до 1.22