Flutter: экранная клавиатура не открывается, когда TextView сфокусирован - PullRequest
2 голосов
/ 24 апреля 2019

Я пытаюсь создать простой экран входа и регистрации для приложения, использующего проверку подлинности Firebase (электронная почта / пароль).При тестировании как на физическом устройстве, так и на эмуляторе экранная клавиатура не выскакивает при фокусировке TextView.Иногда другой экран, который я не могу определить, появляется вскоре после запуска в течение доли секунды, но не каждый раз.

Сработал один раз после того, как понял, что забыл импортировать async иказалось, сработало.После возобновления работы над ним вдруг клавиатура снова не открывалась.Я попытался удалить почти весь мой код и оставить только пользовательский интерфейс, но экранная клавиатура не отображалась.

Код

void main() => runApp(MaterialApp(title: 'Login Test', home: LoginScreen()));

final FirebaseAuth _auth = FirebaseAuth.instance;
class LoginScreen extends StatelessWidget {
    TextEditingController _uname = TextEditingController();
    TextEditingController _pword = TextEditingController();

    Future<FirebaseUser> _handleSignIn(var context, String email, String password) async{
        AlertDialog dialog = new AlertDialog(
            content: new Text("Loading...")
        );
        showDialog(context: context, builder: (BuildContext context) => dialog);
        _auth.signInWithEmailAndPassword(email: email, password: password).then((FirebaseUser user) {
            print("success");
        }).catchError((e) => print(e));
        Navigator.pop(context);
        return _auth.currentUser;
    }

    @override
    Widget build(BuildContext context) {
            Container loginScreen;
            TextField username = TextField(controller: _uname, decoration: InputDecoration(labelText: "Email",), keyboardType: TextInputType.emailAddress, );
            TextField password = TextField(controller: _pword, decoration: InputDecoration(labelText: "Password",), keyboardType: TextInputType.text, obscureText: true,);
            RaisedButton login = RaisedButton(child: Text("Login"),
                onPressed: (){ _handleSignIn(context, _uname.text.toString(), _pword.text.toString()); }
            );
            loginScreen = Container(child: Column(children: [username, password, login]), padding: EdgeInsets.all(16));
            return Scaffold(appBar: AppBar(title: "Login Screen"), body: loginScreen); 
    }
}

Flutter Doctor Вывод:

[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17763.437], locale en-US)
• Flutter version 1.0.0 at C:\flutter
• Framework revision 5391447fae (5 months ago), 2018-11-29 19:41:26 -0800
• Engine revision 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at C:\Users\laury\AppData\Local\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
• All Android licenses accepted.

[√] Android Studio (version 3.4)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 34.0.2
• Dart plugin version 183.5901
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[√] VS Code (version 1.30.2)
• VS Code at C:\Users\laury\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 2.22.3

[√] Connected device (1 available)
• moto g 7 • ZY225F2VS7 • android-arm64 • Android 9 (API 28)

• No issues found!

Согласно большей части прочитанной мной документации, клавиатура должна открываться, когда TextView сфокусировано / выбрано, но не открывается по причине, которую я не могу закрепить.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 25 апреля 2019

Это bug в некоторых старых версиях Flutter.Выполнение flutter upgrade исправит это.

Эта ссылка содержит информацию о том, как обновить флаттер

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