mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
fix flutter error report correct local widget (#41224)
This commit is contained in:
parent
532a8fed41
commit
9423a01204
|
@ -0,0 +1,10 @@
|
|||
<<skip until matching line>>
|
||||
══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
|
||||
The following assertion was thrown during layout:
|
||||
A RenderFlex overflowed by 2844 pixels on the right\.
|
||||
|
||||
The relevant error-causing widget was:
|
||||
Row
|
||||
file:\/\/\/.+print_correct_local_widget_test\.dart:[0-9]+:[0-9]+
|
||||
|
||||
The overflowing RenderFlex has an orientation of Axis.horizontal\.
|
|
@ -0,0 +1,44 @@
|
|||
// Copyright 2019 The Chromium 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/widgets.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Rendering Error', (WidgetTester tester) async {
|
||||
// This should fail with user created widget = Row.
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: const Text('RenderFlex OverFlow'),
|
||||
),
|
||||
body: Container(
|
||||
width: 400.0,
|
||||
child: Row(
|
||||
children: <Widget>[
|
||||
Icon(Icons.message),
|
||||
Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: const <Widget>[
|
||||
Text('Title'),
|
||||
Text(
|
||||
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed'
|
||||
'do eiusmod tempor incididunt ut labore et dolore magna '
|
||||
'aliqua. Ut enim ad minim veniam, quis nostrud '
|
||||
'exercitation ullamco laboris nisi ut aliquip ex ea '
|
||||
'commodo consequat.'
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
);
|
||||
});
|
||||
}
|
|
@ -9,7 +9,7 @@ more information in this error message to help you determine and fix the underly
|
|||
In either case, please report this assertion by filing a bug on GitHub:
|
||||
https:\/\/github\.com\/flutter\/flutter\/issues\/new\?template=BUG\.md
|
||||
|
||||
User-created ancestor of the error-causing widget was:
|
||||
The relevant error-causing widget was:
|
||||
CustomScrollView
|
||||
file:\/\/\/.+print_user_created_ancestor_test\.dart:[0-9]+:7
|
||||
|
||||
|
|
|
@ -2806,15 +2806,15 @@ Iterable<DiagnosticsNode> _describeRelevantUserCode(Element element) {
|
|||
];
|
||||
}
|
||||
final List<DiagnosticsNode> nodes = <DiagnosticsNode>[];
|
||||
element.visitAncestorElements((Element ancestor) {
|
||||
bool processElement(Element target) {
|
||||
// TODO(chunhtai): should print out all the widgets that are about to cross
|
||||
// package boundaries.
|
||||
if (_isLocalCreationLocation(ancestor)) {
|
||||
if (_isLocalCreationLocation(target)) {
|
||||
nodes.add(
|
||||
DiagnosticsBlock(
|
||||
name: 'User-created ancestor of the error-causing widget was',
|
||||
name: 'The relevant error-causing widget was',
|
||||
children: <DiagnosticsNode>[
|
||||
ErrorDescription('${ancestor.widget.toStringShort()} ${_describeCreationLocation(ancestor)}'),
|
||||
ErrorDescription('${target.widget.toStringShort()} ${_describeCreationLocation(target)}'),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
@ -2822,7 +2822,9 @@ Iterable<DiagnosticsNode> _describeRelevantUserCode(Element element) {
|
|||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
if (processElement(element))
|
||||
element.visitAncestorElements(processElement);
|
||||
return nodes;
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,12 @@ void main() {
|
|||
return _testFile('print_user_created_ancestor_no_flag', automatedTestsDirectory, flutterTestDirectory);
|
||||
}, skip: io.Platform.isWindows); // TODO(chunhtai): Dart on Windows has trouble with unicode characters in output (#35425).
|
||||
|
||||
testUsingContext('report correct created widget caused the error', () async {
|
||||
Cache.flutterRoot = '../..';
|
||||
return _testFile('print_correct_local_widget', automatedTestsDirectory, flutterTestDirectory,
|
||||
extraArguments: const <String>['--track-widget-creation']);
|
||||
}, skip: io.Platform.isWindows); // TODO(chunhtai): Dart on Windows has trouble with unicode characters in output (#35425).
|
||||
|
||||
testUsingContext('can load assets within its own package', () async {
|
||||
Cache.flutterRoot = '../..';
|
||||
return _testFile('package_assets', automatedTestsDirectory, flutterTestDirectory, exitCode: isZero);
|
||||
|
|
Loading…
Reference in a new issue