<p dir="auto">We ran into an issue with keep alives not working. We were using the <code class="notranslate">AutomaticKeepAliveClientMixin</code> in an abstract <code class="notranslate">State</code> class. Because of the <code class="notranslate">@mustCallSuper</code> annotation, we knew to call <code class="notranslate">super.build</code> in the <code class="notranslate">build</code> method of the abstract class. However, there was no warning for the fact that we weren't calling <code class="notranslate">super.build</code> in the concrete implementations of our abstract <code class="notranslate">State</code> class.</p>
<p dir="auto">I can't envision a case where you wouldn't want the annotation to extend to all transitive subclasses.</p>
<p dir="auto">Flutter version: Very recent master build</p>
<p dir="auto">Happens in the Android Emulator (with Google Keyboard) and on a real Android device (with Sony keyboard). I'm not sure about iOS.</p>
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/22688477/46633912-79231f80-cb4f-11e8-91fe-bacb722a3546.png"><img src="https://user-images.githubusercontent.com/22688477/46633912-79231f80-cb4f-11e8-91fe-bacb722a3546.png" width="200" style="max-width: 100%;"></a></p>
<p dir="auto">Code to reproduce:</p>
<div class="highlight highlight-source-dart notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_playground/text_area.dart';
import 'package:path/path.dart' as path;

void main() =&gt; runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Playground',
      home: AutoCorrectTest(),
    );
  }
}

class AutoCorrectTest extends StatefulWidget {
  @override
  _AutoCorrectTestState createState() =&gt; _AutoCorrectTestState();
}

class _AutoCorrectTestState extends State&lt;AutoCorrectTest&gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('TextField with autocorrect: false'),
      ),
      body: Padding(
        padding: EdgeInsets.all(16.0),
        child: TextField(
          autocorrect: false
        )
      ),
    );
  }
}"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s">'package:flutter/material.dart'</span>;
<span class="pl-k">import</span> <span class="pl-s">'package:flutter/services.dart'</span>;
<span class="pl-k">import</span> <span class="pl-s">'package:flutter_playground/text_area.dart'</span>;
<span class="pl-k">import</span> <span class="pl-s">'package:path/path.dart'</span> <span class="pl-k">as</span> path;

<span class="pl-k">void</span> <span class="pl-en">main</span>() <span class="pl-k">=&gt;</span> <span class="pl-en">runApp</span>(<span class="pl-c1">MyApp</span>());

<span class="pl-k">class</span> <span class="pl-c1">MyApp</span> <span class="pl-k">extends</span> <span class="pl-c1">StatelessWidget</span> {
  <span class="pl-k">@override</span>
  <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
    <span class="pl-k">return</span> <span class="pl-c1">MaterialApp</span>(
      title<span class="pl-k">:</span> <span class="pl-s">'Flutter Playground'</span>,
      home<span class="pl-k">:</span> <span class="pl-c1">AutoCorrectTest</span>(),
    );
  }
}

<span class="pl-k">class</span> <span class="pl-c1">AutoCorrectTest</span> <span class="pl-k">extends</span> <span class="pl-c1">StatefulWidget</span> {
  <span class="pl-k">@override</span>
  <span class="pl-c1">_AutoCorrectTestState</span> <span class="pl-en">createState</span>() <span class="pl-k">=&gt;</span> <span class="pl-c1">_AutoCorrectTestState</span>();
}

<span class="pl-k">class</span> <span class="pl-c1">_AutoCorrectTestState</span> <span class="pl-k">extends</span> <span class="pl-c1">State</span>&lt;<span class="pl-c1">AutoCorrectTest</span>&gt; {
  <span class="pl-k">@override</span>
  <span class="pl-c1">Widget</span> <span class="pl-en">build</span>(<span class="pl-c1">BuildContext</span> context) {
    <span class="pl-k">return</span> <span class="pl-c1">Scaffold</span>(
      appBar<span class="pl-k">:</span> <span class="pl-c1">AppBar</span>(
        title<span class="pl-k">:</span> <span class="pl-c1">Text</span>(<span class="pl-s">'TextField with autocorrect: false'</span>),
      ),
      body<span class="pl-k">:</span> <span class="pl-c1">Padding</span>(
        padding<span class="pl-k">:</span> <span class="pl-c1">EdgeInsets</span>.<span class="pl-en">all</span>(<span class="pl-c1">16.0</span>),
        child<span class="pl-k">:</span> <span class="pl-c1">TextField</span>(
          autocorrect<span class="pl-k">:</span> <span class="pl-c1">false</span>
        )
      ),
    );
  }
}</pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[√] Flutter (Channel master, v0.9.7-pre.61, on Microsoft Windows [Version 10.0.17134.285], locale de-DE)
    • Flutter version 0.9.7-pre.61 at C:\flutter
    • Framework revision 2d81adf74c (3 days ago), 2018-10-05 22:29:37 -0700
    • Engine revision 572fa5646a
    • Dart version 2.1.0-dev.6.0.flutter-c6254163dc

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

[√] Android Studio (version 3.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 29.0.2
    • Dart plugin version 181.5616
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[!] VS Code, 64-bit edition
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[√] Connected device (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)"><pre class="notranslate"><code class="notranslate">[√] Flutter (Channel master, v0.9.7-pre.61, on Microsoft Windows [Version 10.0.17134.285], locale de-DE)
    • Flutter version 0.9.7-pre.61 at C:\flutter
    • Framework revision 2d81adf74c (3 days ago), 2018-10-05 22:29:37 -0700
    • Engine revision 572fa5646a
    • Dart version 2.1.0-dev.6.0.flutter-c6254163dc

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

[√] Android Studio (version 3.2)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 29.0.2
    • Dart plugin version 181.5616
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[!] VS Code, 64-bit edition
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[√] Connected device (1 available)
    • Android SDK built for x86 • emulator-5554 • android-x86 • Android 9 (API 28) (emulator)
</code></pre></div>