Repository: flutter
Issue: DropdownButton cannot progammatically request Focus using `FocusNode.requestFocus`
Labels: framework,f: material design,f: focus,has reproducible steps,found in release: 3.3,found in release: 3.6,team-design,triaged-design

## Steps to Reproduce

1. Set up a simple view with many TextField's(first with autofocus: true)  and DropdownButton or DropdownButtonFormField at the bottom.
2. Request  to move focus to Dropdown

**Expected results:**

First TextField loses focus and the screen moves to Dropdown

**Actual results:**

First TextField loses focus, but the screen won't move to Dropdown

**Comment:**

Is it expected behavior or not? Am I missing something? If it is, is it possible to move the focus of the screen to a widget?

<details>
  <summary>Logs</summary>

[✓] Flutter (Channel stable, 1.20.2, on Linux, locale en_US.UTF-8)
    • Flutter version 1.20.2 at /home/stanislav/snap/flutter/common/flutter
    • Framework revision bbfbf1770c (5 weeks ago), 2020-08-13 08:33:09 -0700
    • Engine revision 9d5b21729f
    • Dart version 2.9.1

 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /home/stanislav/Android/Sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /home/stanislav/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Android Studio (version 4.0)
    • Android Studio at /home/stanislav/.local/share/JetBrains/Toolbox/apps/AndroidStudio/ch-0/193.6626763
    • Flutter plugin version 49.0.2
    • Dart plugin version 193.7547
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] Connected device (1 available)
    • Android SDK built for x86 64 (mobile) • emulator-5554 • android-x64 • Android 9 (API 28) (emulator)

</details>
<details>
  <summary>Code Example</summary>

 ```dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Field Focus',
      home: MyCustomForm(),
    );
  }
}

class MyCustomForm extends StatefulWidget {
  @override
  _MyCustomFormState createState() => _MyCustomFormState();
}

class _MyCustomFormState extends State<MyCustomForm> {
  FocusNode myFocusNode;

  @override
  void initState() {
    super.initState();

    myFocusNode = FocusNode();
  }

  @override
  void dispose() {
    myFocusNode.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Field Focus'),
      ),
      body: SingleChildScrollView(
        physics: AlwaysScrollableScrollPhysics(),
        child: Column(
            children: [
              TextField(
                autofocus: true,
              ),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              TextField(),
              DropdownButtonFormField(
                onChanged: (value) {},
                focusNode: myFocusNode,
                items:  [
                  DropdownMenuItem<int>(
                    value: 1,
                    child: Text('1'),
                  ),
                  DropdownMenuItem<int>(
                    value: 2,
                    child: Text('2'),
                  ),
                  DropdownMenuItem<int>(
                    value: 3,
                    child: Text('3'),
                  ),
                ],
              )
            ]),
      ),
      floatingActionButton: FloatingActionButton(
        // When the button is pressed,
        // give focus to the dropdown using myFocusNode.
        onPressed: () => myFocusNode.requestFocus(),
        tooltip: 'Focus DropDown',
        child: Icon(Icons.edit),
      ),
    );
  }
}
```

</details>