
Add autofocus=true to first TextButton in dialog so that focus automatically goes to an interactive element when dialog is opened. Before: https://screencast.googleplex.com/cast/NTYxNTczMTk2MDk3MTI2NHxlMjAyOTMzZi1lNw After: https://screencast.googleplex.com/cast/NTk1NzMxNjYxNTYwMjE3NnxlYWNlM2Q1MC1jYw fixes b/338656477 NOTE: This would be a good candidate to update the documentation for Dialogs and TextButtons to encourage the user to add autofocus=true on at least one button so that focus automatically goes to an interactive element instead of the actual Dialog element.
71 lines
2.1 KiB
Dart
71 lines
2.1 KiB
Dart
// Copyright 2014 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'use_cases.dart';
|
|
|
|
class DialogUseCase extends UseCase {
|
|
@override
|
|
String get name => 'Dialog';
|
|
|
|
@override
|
|
String get route => '/dialog';
|
|
|
|
@override
|
|
Widget build(BuildContext context) => const _MainWidget();
|
|
}
|
|
|
|
class _MainWidget extends StatelessWidget {
|
|
const _MainWidget();
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
|
|
title: Semantics(headingLevel: 1, child: const Text('Dialog Demo')),
|
|
),
|
|
body: Center(
|
|
child: TextButton(
|
|
onPressed: () => showDialog<String>(
|
|
context: context,
|
|
builder: (BuildContext context) => Dialog(
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
children: <Widget>[
|
|
const Text('This is a typical dialog.'),
|
|
const SizedBox(height: 15),
|
|
Row(
|
|
children: <Widget>[
|
|
TextButton(
|
|
key: const Key('OK Button'),
|
|
autofocus: true,
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
},
|
|
child: const Text('OK'),
|
|
),
|
|
TextButton(
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
},
|
|
child: const Text('Cancel'),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
),
|
|
child: const Text('Show Dialog'),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|