Flutter: القدرة على إزالة تركيز لوحة المفاتيح من الشجرة بأكملها

تم إنشاؤها على ١ فبراير ٢٠١٨  ·  1تعليق  ·  مصدر: flutter/flutter

خطوات التكاثر

أود إظهار نص hintText لحقل نص حتى يلمس المستخدم مكانًا آخر.
يمكن أن تكون نقطة اللمس عميقة في شجرة عنصر واجهة المستخدم ولا أعرف كيفية الحصول على العقدة المركزة الحالية في مكان ما في شجرة عناصر واجهة المستخدم للاتصال بغير التركيز ، لإظهار حقل النص غير نشط وإخفاء لوحة المفاتيح. قد تكون هذه مجرد مشكلة في فهمي للرفرفة أو التوثيق الذي يفتقر إلى المثال ولا يشرح كيفية استخدام الأنماط.

يوضح مثال الكود GestureDetector الذي يستدعي إلغاء التركيز على العقدة. هذا بسيط هنا لأنه يمكن الوصول إلى focusNode بسهولة في نفس عنصر واجهة المستخدم. السؤال هنا هو كيفية القيام بالشيء نفسه في شجرة عنصر واجهة مستخدم متداخلة. ما هو النمط الموصى به للقيام بذلك؟

  <strong i="9">@override</strong>
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
          title: new Text(widget.title),
        ),
        body: new Stack(children: <Widget>[
          new GestureDetector(
              excludeFromSemantics: true,
              onTapDown: (_) {
                _focusNode.unfocus();
              }),
          new Column(children: <Widget>[
            new TextField(
                focusNode: _focusNode,
                decoration: new InputDecoration(
                    border: null,
                    hintText: _focusNode.hasFocus ? 'FOCUS' : 'no focus')),
            new RaisedButton(
                child: new Text('Remove Focus'),
                onPressed: () => _focusNode.unfocus())
          ])
        ]));
  }

  final FocusNode _focusNode = new FocusNode();

  <strong i="10">@override</strong>
  void initState() {
    super.initState();
    _focusNode.addListener(() {
      setState(() {});
      print('Has focus: $_focusNode.hasFocus');
    });
  }

دكتور رفرفة

[√] Flutter (on Microsoft Windows [Version 10.0.16299.192], locale en-US, channel dev)
    • Flutter version 0.0.21 at c:\sdks\flutter
    • Framework revision 2e449f06f0 (2 days ago), 2018-01-29 14:26:51 -0800
    • Engine revision 6921873c71
    • Tools Dart version 2.0.0-dev.16.0
    • Engine Dart version 2.0.0-edge.da1f52592ef73fe3afa485385cb995b9aec0181a

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

[√] Android Studio (version 3.0)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b01)

[√] IntelliJ IDEA Community Edition (version 2017.2)
    • Flutter plugin version 19.1
    • Dart plugin version 172.4343.25

[√] Connected devices
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 7.1.1 (API 25) (emulator)
look material design framework new feature

التعليق الأكثر فائدة

أعتقد أن هذا يتلخص في

FocusScope.of(context).requestFocus(new FocusNode());

إغلاق كنسخة مكررة من # 7247
ربما أيضًا # 20227

>كل التعليقات

أعتقد أن هذا يتلخص في

FocusScope.of(context).requestFocus(new FocusNode());

إغلاق كنسخة مكررة من # 7247
ربما أيضًا # 20227

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات