Repository: flutter
Issue: Talkback does not honor scopesRoute unless namesRoute and label are also set
Labels: platform-android,framework,engine,a: accessibility,f: routes,customer: amplify,has reproducible steps,P2,found in release: 3.3,found in release: 3.6,team-android,triaged-android

When creating a Semantics widget with `scopesRoute` set to true, iOS VO will honor that and focus the top element when a new widget is inserted into the tree with that property set, but Android's TalkBack will not, unless namesRoute and label are also set.

The following code shows the problem:

```
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SemanticsHomePage(),
    );
  }
}

class SemanticsHomePage extends StatefulWidget {
  const SemanticsHomePage();

  _SemanticsHomePageState createState() => _SemanticsHomePageState();
}

class _SemanticsHomePageState extends State<SemanticsHomePage> {

  Widget _tree1;
  Widget _tree2;

  Key _tree1Key = UniqueKey();
  Key _tree2Key = UniqueKey();

  int _currentTree = 0;

  void _buildTrees() {
    _tree1 = Semantics(
      key: _tree1Key,
      scopesRoute: true,
      explicitChildNodes: true,
      // uncomment these lines for Android!!
      //namesRoute: true,
      //label: "Tree 1",
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          Text("Test 1", style: TextStyle(fontSize: 50)),
          Text("Test 2", style: TextStyle(fontSize: 50)),
          Text("Test 3", style: TextStyle(fontSize: 50)),
          FlatButton(
              child: Text("Change", style: TextStyle(fontSize: 20)), onPressed: () {
                setState(() {
                  _currentTree = (_currentTree + 1) % 2;
                });
              })
        ],
      ),
    );
    _tree2 = Semantics(
      key: _tree2Key,
      scopesRoute: true,
      explicitChildNodes: true,
      // uncomment these lines for Android!!
      //namesRoute: true,
      //label: "Tree 2",
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: <Widget>[
          FlatButton(
              child: Text("Change", style: TextStyle(fontSize: 20)), onPressed: () {
                setState(() {
                  _currentTree = (_currentTree + 1) % 2;
                });
              }),
          Text("Test 4", style: TextStyle(fontSize: 50)),
          Text("Test 5", style: TextStyle(fontSize: 50)),
          Text("Test 6", style: TextStyle(fontSize: 50)),
          Text("Test 7", style: TextStyle(fontSize: 50)),
          Text("Test 8", style: TextStyle(fontSize: 50)),
        ],
      ),
    );
  }

  @override
  void initState() {
    _buildTrees();

    super.initState();
  }

  @override
  void didUpdateWidget(SemanticsHomePage oldWidget) {
    _buildTrees();

    super.didUpdateWidget(oldWidget);
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
        body: Container(
          child: Center(
              child: _currentTree == 0 ? _tree1 : _tree2
          ),
        )
    );
  }
}
```

Running this code on iOS works as expected, which is that the first element is focused and read after interacting with the "Change button", but on Android it does not. Uncommenting the lines in the code for Android makes it work, however it would be best to not have to set namesRoute and label, as that's not always something that makes sense in certain scenarios.