From cf45a7da381d8526ab72e583fec740c6583da593 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Thu, 24 Aug 2023 13:37:46 -0700 Subject: [PATCH] Move `OutlineDecoration` to devtools_app_shared (#6245) --- .../lib/src/framework/scaffold.dart | 1 - .../lib/src/screens/debugger/common.dart | 1 - .../widgets/class_details/class_details.dart | 1 - .../network/network_request_inspector.dart | 1 - .../panes/method_table/method_table.dart | 1 - .../vm_object_pool_display.dart | 1 - .../vm_unknown_object_display.dart | 2 +- .../lib/src/shared/common_widgets.dart | 67 ---------------- .../devtools_app/lib/src/shared/ui/tab.dart | 1 - .../lib/src/ui/common.dart | 79 +++++++++++++++++++ 10 files changed, 80 insertions(+), 75 deletions(-) diff --git a/packages/devtools_app/lib/src/framework/scaffold.dart b/packages/devtools_app/lib/src/framework/scaffold.dart index 5ff29e6c542..afb70989776 100644 --- a/packages/devtools_app/lib/src/framework/scaffold.dart +++ b/packages/devtools_app/lib/src/framework/scaffold.dart @@ -12,7 +12,6 @@ import '../extensions/extension_settings.dart'; import '../screens/debugger/debugger_screen.dart'; import '../shared/analytics/prompt.dart'; import '../shared/banner_messages.dart'; -import '../shared/common_widgets.dart'; import '../shared/config_specific/drag_and_drop/drag_and_drop.dart'; import '../shared/config_specific/import_export/import_export.dart'; import '../shared/console/widgets/console_pane.dart'; diff --git a/packages/devtools_app/lib/src/screens/debugger/common.dart b/packages/devtools_app/lib/src/screens/debugger/common.dart index 1f9b90712c0..22c2f040ab1 100644 --- a/packages/devtools_app/lib/src/screens/debugger/common.dart +++ b/packages/devtools_app/lib/src/screens/debugger/common.dart @@ -5,7 +5,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; -import '../../shared/common_widgets.dart'; import '../../shared/utils.dart'; /// Create a header area for a debugger component. diff --git a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/class_details.dart b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/class_details.dart index 2ccd6c93542..b7a3834f8ae 100644 --- a/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/class_details.dart +++ b/packages/devtools_app/lib/src/screens/memory/panes/diff/widgets/class_details/class_details.dart @@ -5,7 +5,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/widgets.dart'; -import '../../../../../../shared/common_widgets.dart'; import '../../../../shared/heap/heap.dart'; import '../../controller/class_data.dart'; import 'path.dart'; diff --git a/packages/devtools_app/lib/src/screens/network/network_request_inspector.dart b/packages/devtools_app/lib/src/screens/network/network_request_inspector.dart index 63c594edb46..a3913c9a9ef 100644 --- a/packages/devtools_app/lib/src/screens/network/network_request_inspector.dart +++ b/packages/devtools_app/lib/src/screens/network/network_request_inspector.dart @@ -6,7 +6,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; import '../../shared/analytics/constants.dart' as gac; -import '../../shared/common_widgets.dart'; import '../../shared/http/http_request_data.dart'; import '../../shared/ui/tab.dart'; import 'network_controller.dart'; diff --git a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart index 1b72c829b5d..92f7206d413 100644 --- a/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart +++ b/packages/devtools_app/lib/src/screens/profiler/panes/method_table/method_table.dart @@ -6,7 +6,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:devtools_app_shared/utils.dart'; import 'package:flutter/material.dart'; -import '../../../../shared/common_widgets.dart'; import '../../../../shared/primitives/utils.dart'; import '../../../../shared/profiler_utils.dart'; import '../../../../shared/table/table.dart'; diff --git a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart index e504b019b4b..d3df78e07eb 100644 --- a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart +++ b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_object_pool_display.dart @@ -6,7 +6,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; import 'package:vm_service/vm_service.dart'; -import '../../../shared/common_widgets.dart'; import '../../../shared/primitives/utils.dart'; import '../../../shared/table/table.dart'; import '../../../shared/table/table_data.dart'; diff --git a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_unknown_object_display.dart b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_unknown_object_display.dart index bc593de4dea..978c59a1ec6 100644 --- a/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_unknown_object_display.dart +++ b/packages/devtools_app/lib/src/screens/vm_developer/object_inspector/vm_unknown_object_display.dart @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; -import '../../../shared/common_widgets.dart'; import '../vm_developer_common_widgets.dart'; import 'object_inspector_view_controller.dart'; import 'vm_object_model.dart'; diff --git a/packages/devtools_app/lib/src/shared/common_widgets.dart b/packages/devtools_app/lib/src/shared/common_widgets.dart index b2899b39c26..fabd7acc635 100644 --- a/packages/devtools_app/lib/src/shared/common_widgets.dart +++ b/packages/devtools_app/lib/src/shared/common_widgets.dart @@ -943,73 +943,6 @@ class OutlinedRowGroup extends StatelessWidget { } } -class OutlineDecoration extends StatelessWidget { - const OutlineDecoration({ - Key? key, - this.child, - this.showTop = true, - this.showBottom = true, - this.showLeft = true, - this.showRight = true, - }) : super(key: key); - - factory OutlineDecoration.onlyBottom({required Widget? child}) => - OutlineDecoration( - showTop: false, - showLeft: false, - showRight: false, - child: child, - ); - - factory OutlineDecoration.onlyTop({required Widget? child}) => - OutlineDecoration( - showBottom: false, - showLeft: false, - showRight: false, - child: child, - ); - - factory OutlineDecoration.onlyLeft({required Widget? child}) => - OutlineDecoration( - showBottom: false, - showTop: false, - showRight: false, - child: child, - ); - - factory OutlineDecoration.onlyRight({required Widget? child}) => - OutlineDecoration( - showBottom: false, - showTop: false, - showLeft: false, - child: child, - ); - - final bool showTop; - final bool showBottom; - final bool showLeft; - final bool showRight; - - final Widget? child; - - @override - Widget build(BuildContext context) { - final color = Theme.of(context).focusColor; - final border = BorderSide(color: color); - return Container( - decoration: BoxDecoration( - border: Border( - left: showLeft ? border : BorderSide.none, - right: showRight ? border : BorderSide.none, - top: showTop ? border : BorderSide.none, - bottom: showBottom ? border : BorderSide.none, - ), - ), - child: child, - ); - } -} - class ThickDivider extends StatelessWidget { const ThickDivider({super.key}); diff --git a/packages/devtools_app/lib/src/shared/ui/tab.dart b/packages/devtools_app/lib/src/shared/ui/tab.dart index a67f489741f..b4cb1c85d30 100644 --- a/packages/devtools_app/lib/src/shared/ui/tab.dart +++ b/packages/devtools_app/lib/src/shared/ui/tab.dart @@ -6,7 +6,6 @@ import 'package:devtools_app_shared/ui.dart'; import 'package:flutter/material.dart'; import '../analytics/analytics.dart' as ga; -import '../common_widgets.dart'; import '../utils.dart'; double get _tabHeight => scaleByFontFactor(46.0); diff --git a/packages/devtools_app_shared/lib/src/ui/common.dart b/packages/devtools_app_shared/lib/src/ui/common.dart index 65775ecd5ee..3993279552c 100644 --- a/packages/devtools_app_shared/lib/src/ui/common.dart +++ b/packages/devtools_app_shared/lib/src/ui/common.dart @@ -109,6 +109,14 @@ class AreaPaneHeader extends StatelessWidget implements PreferredSizeWidget { } } +/// Wraps [child] in a rounded border with default styling. +/// +/// This border can optionally be made non-uniform by setting any of +/// [showTop], [showBottom], [showLeft] or [showRight] to false. +/// +/// If [clip] is true, the child will be wrapped in a [ClipRRect] to ensure the +/// rounded corner of the border is drawn as expected. This should not be +/// necessary in most cases. final class RoundedOutlinedBorder extends StatelessWidget { const RoundedOutlinedBorder({ super.key, @@ -182,6 +190,77 @@ final class RoundedOutlinedBorder extends StatelessWidget { } } +/// Wraps [child] in a border with default styling. +/// +/// This border can optionally be made non-uniform by setting any of +/// [showTop], [showBottom], [showLeft] or [showRight] to false. +final class OutlineDecoration extends StatelessWidget { + const OutlineDecoration({ + Key? key, + this.child, + this.showTop = true, + this.showBottom = true, + this.showLeft = true, + this.showRight = true, + }) : super(key: key); + + factory OutlineDecoration.onlyBottom({required Widget? child}) => + OutlineDecoration( + showTop: false, + showLeft: false, + showRight: false, + child: child, + ); + + factory OutlineDecoration.onlyTop({required Widget? child}) => + OutlineDecoration( + showBottom: false, + showLeft: false, + showRight: false, + child: child, + ); + + factory OutlineDecoration.onlyLeft({required Widget? child}) => + OutlineDecoration( + showBottom: false, + showTop: false, + showRight: false, + child: child, + ); + + factory OutlineDecoration.onlyRight({required Widget? child}) => + OutlineDecoration( + showBottom: false, + showTop: false, + showLeft: false, + child: child, + ); + + final bool showTop; + final bool showBottom; + final bool showLeft; + final bool showRight; + + final Widget? child; + + @override + Widget build(BuildContext context) { + final color = Theme.of(context).focusColor; + final border = BorderSide(color: color); + return Container( + decoration: BoxDecoration( + border: Border( + left: showLeft ? border : BorderSide.none, + right: showRight ? border : BorderSide.none, + top: showTop ? border : BorderSide.none, + bottom: showBottom ? border : BorderSide.none, + ), + ), + child: child, + ); + } +} + /// [BorderSide] styled with the DevTools default color palette. BorderSide defaultBorderSide(ThemeData theme) { return BorderSide(color: theme.focusColor);