Repository: flutter
Issue: Can't bring custom selection into view from Scrollable when showing keyboard
Labels: a: text input,framework,f: scrolling,f: focus,has reproducible steps,P3,team-framework,triaged-framework,found in release: 3.13,found in release: 3.17

I have a forgot password screen that contains a button at the bottom of the ListView.
![image](https://user-images.githubusercontent.com/21172855/74021805-90b92500-499c-11ea-8a01-9643dcf71fb8.png)

The default behaviour is the image below. But we want to make sure that the button is visible as well.  
![image](https://user-images.githubusercontent.com/21172855/74021811-96166f80-499c-11ea-9474-dd69afe37059.png)

This is the desired behaviour: 
![image](https://user-images.githubusercontent.com/21172855/74021816-9a428d00-499c-11ea-82d5-f3718d71fe4a.png)

This code sample below is what I have at this point. The animate to does not work because the keyboard animates up. and at startup the the listview can not scroll so there is no need to scroll to the bottom. How can I fix this?
A small screen that could be used for testing:

```

class ForgotPasswordScreen extends StatefulWidget {

  const ForgotPasswordScreen();

  @override
  State<StatefulWidget> createState() => ForgotPasswordScreenState();
}

class ForgotPasswordScreenState extends State<ForgotPasswordScreen>  {
  ScrollController _scrollController;

  @override
  void initState() {
    super.initState();
    _scrollController = ScrollController(keepScrollOffset: true);
    _scrollToBottom();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: ListView(
          controller: _scrollController,
          children: [
            Center(
              child: Padding(
                padding: const EdgeInsets.all(34),
                child: Column(
                  children: [
                    Text(
                      'long textlong textlong textlong textlong textlong textlong textlong textlong textlong textlong textlong textlong textlong textlong text',
                      style: ThemeTextStyles.inputTextTextStyle,
                    ),
                    Container(
                      height: 47,
                    ),
                    TextField(
                      autofocus: true,
                      decoration: InputDecoration(
                        border: const OutlineInputBorder(),
                      ),
                    ),
                    Container(
                      height: 47,
                    ),
                    MaterialButton(
                      color: Colors.deepOrange,
                      child: Text('button'),
                      onPressed: () {},
                    )
                  ],
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

  Future<void> _scrollToBottom() async {
    await _scrollController.animateTo(
      _scrollController.position.maxScrollExtent,
      duration: Duration(milliseconds: 250),
      curve: Curves.easeIn,
    );
  }
}
```

Flutter Doctor:
```
[✓] Flutter (Channel unknown, v1.12.13+hotfix.5, on Mac OS X 10.15.1 19B88, locale en-BE)
    • Flutter version 1.12.13+hotfix.5 at /Users/vanlooverenkoen/flutter
    • Framework revision 27321ebbad (8 weeks ago), 2019-12-10 18:15:01 -0800
    • Engine revision 2994f7e1e6
    • Dart version 2.7.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/vanlooverenkoen/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3, Build version 11C29
    • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 43.0.1
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[!] VS Code (version 1.42.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (4 available)
    • iPhone 5s  • 2A34F270-D88D-445A-B723-E6C9C439E662 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-12-4 (simulator)
    • macOS      • macOS                                • darwin-x64     • Mac OS X 10.15.1 19B88
    • Chrome     • chrome                               • web-javascript • Google Chrome 78.0.3904.108
    • Web Server • web-server                           • web-javascript • Flutter Tools

```