#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