概述

#

`Dialog` 的实例以及 `SimpleDialog`、`AlertDialog` 和 `showTimePicker` 现在都具有 `RoundedRectangleBorder` 的默认形状,其 `BorderRadius` 为 4.0 像素。这与当前的 Material Design 规范相符。在此更改之前,`Dialog.shape` 的 `BorderRadius` 默认行为是 2.0 像素。

背景

#

`Dialog` 及其相关子类(`SimpleDialog`、`AlertDialog` 和 `showTimePicker`)的外观略有不同,因为边框半径增大了。如果您拥有带有 `Dialog` 之前 2.0 像素边框半径渲染效果的基准黄金文件图像,您的 Widget 测试将会失败。这些黄金文件图像可以更新以反映新的渲染效果,或者您可以更新您的代码以保持原有行为。

`showDatePicker` 对话框已经符合此规范,不受此更改的影响。

迁移指南

#

如果您希望保持旧有形状,可以使用 `Dialog` 的 shape 属性指定原始的 2 像素半径。

将对话框形状设置为原始半径

dart
import 'package:flutter/material.dart';

void main() => runApp(Foo());

class Foo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        floatingActionButton: FloatingActionButton(onPressed: () {
          showDialog(
            context: context,
            builder: (BuildContext context) {
              return AlertDialog(
                content: Text('Alert!'),
                shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.all(Radius.circular(2))),
              );
            },
          );
        }),
      ),
    );
  }
}

如果您偏好新的行为并且黄金文件测试失败,可以使用此命令更新您的基准黄金文件

flutter test --update-goldens

时间线

#

落地版本:1.20.0-0.0.pre
稳定版本中:1.20

参考资料

#

API 文档

相关 PR