【问题标题】:Flutter: OnScreen keyboard not opening when TextView is focusedFlutter:当 TextView 获得焦点时,屏幕上的键盘未打开
【发布时间】:2019-09-13 04:50:33
【问题描述】:

我正在尝试为使用 Firebase 身份验证(电子邮件/密码)的应用创建一个简单的登录和注册屏幕。在物理设备和模拟器上进行测试时,当 TextView 获得焦点时,屏幕键盘不会弹出。有时,我无法识别的另一个屏幕会在运行一瞬间后立即弹出,但不是每次都弹出。

在我意识到我忘记导入 async 之后它工作了一次,它似乎工作了。稍后恢复工作后,突然键盘不再打开。我尝试删除几乎所有代码并只保留 UI,但屏幕键盘没有显示。

代码

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 被聚焦/选择时,键盘应该打开,但由于我似乎无法固定的原因它没有打开。

我该如何解决这个问题?

【问题讨论】:

  • 它是否显示任何警告或错误?
  • 在安卓模拟器上运行它对我来说很好。如果您在 iOS 模拟器上运行它,默认情况下键盘不会显示,因此您需要按 ⌘K 才能显示。
  • @JideGuruTheProgrammer 我得到的唯一警告是 registerResGenerating 任务已被弃用。
  • 你能把你的flutter doctor贴在上面吗,这样人们可以更好地帮助你。
  • 你可以试试更新flutter,可能会有帮助

标签: firebase dart flutter firebase-authentication textview


【解决方案1】:

这是bug 在某些旧版本的Flutter 中的bug。执行flutter upgrade 将修复它。

link 包含有关如何升级 Flutter 的信息

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 2013-09-10
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多