-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Description
Is there an existing issue for this?
- I have searched the existing issues
- I have read the guide to filing a bug
Steps to reproduce
In the sample code from the SearchAnchor.2.dart add a trailing widget to the ListTile in the SearchAnchor suggestionsBuilder and it throws an _AssertionError when closing the search view.
Expected results
Expect to be able to have a trailing widget in a ListTile built by the suggestionsBuilder of the SearchAnchor.
Actual results
Throws the following error:
_AssertionError ('package:flutter/src/material/list_tile.dart': Failed assertion: line 1323 pos 7: 'tileWidth != trailingSize.width || tileWidth == 0.0': Trailing widget consumes entire tile width. Please use a sized widget, or consider replacing ListTile with a custom widget (see https://api.flutter.dev/flutter/material/ListTile-class.html#material.ListTile.4))
Code sample
Code sample
// 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';
/// Flutter code sample for [SearchAnchor].
void main() => runApp(const SearchBarApp());
class SearchBarApp extends StatefulWidget {
const SearchBarApp({super.key});
@override
State<SearchBarApp> createState() => _SearchBarAppState();
}
class _SearchBarAppState extends State<SearchBarApp> {
final SearchController controller = SearchController();
@override
Widget build(BuildContext context) {
final ThemeData themeData = ThemeData(useMaterial3: true);
return MaterialApp(
theme: themeData,
home: Scaffold(
appBar: AppBar(title: const Text('Search Anchor Sample')),
body: Column(
children: <Widget>[
SearchAnchor(
searchController: controller,
builder: (BuildContext context, SearchController controller) {
return IconButton(
icon: const Icon(Icons.search),
onPressed: () {
controller.openView();
},
);
},
suggestionsBuilder:
(BuildContext context, SearchController controller) {
return List<ListTile>.generate(5, (int index) {
final String item = 'item $index';
return ListTile(
title: Text(item),
// Below is the one line changed from the example: search_anchor.2.dart
// https://github.com/flutter/flutter/blob/master/examples/api/lib/material/search_anchor/search_anchor.2.dart
trailing: const Icon(Icons.chevron_right),
onTap: () {
setState(() {
controller.closeView(item);
});
},
);
});
}),
Center(
child: controller.text.isEmpty
? const Text('No item selected')
: Text('Selected item: ${controller.value.text}'),
),
],
),
),
);
}
}
Screenshots or Video
No response
Logs
Logs
Failed assertion: line 1323 pos 7: 'tileWidth != trailingSize.width || tileWidth == 0.0'
Either the assertion indicates an error in the framework itself, or we should provide substantially
more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.md
The relevant error-causing widget was:
ListTile
ListTile:file:///Users/dalenjohnson/Developer/Projects/Flutter%20Empty/search_anchor_list_title_trailing_test/lib/main.dart:45:28
When the exception was thrown, this was the stack:
#2 _RenderListTile.performLayout (package:flutter/src/material/list_tile.dart:1323:7)
list_tile.dart:1323
#3 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#4 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#5 RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
shifted_box.dart:238
#6 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#7 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#8 RenderPadding.performLayout (package:flutter/src/rendering/shifted_box.dart:238:12)
shifted_box.dart:238
#9 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#10 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#11 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#12 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#13 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#14 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#15 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#16 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#17 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#18 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#19 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#20 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#21 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#22 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#23 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#24 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#25 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#26 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#27 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#28 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#29 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#30 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#31 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#32 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:213:28)
sliver_list.dart:213
#33 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#34 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:139:12)
sliver_padding.dart:139
#35 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:361:11)
sliver_padding.dart:361
#36 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#37 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:534:13)
viewport.dart:534
#38 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1511:12)
viewport.dart:1511
#39 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1420:20)
viewport.dart:1420
#40 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#41 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#42 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#43 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#44 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#45 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#46 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#47 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#48 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#49 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#50 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#51 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#52 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#53 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#54 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#55 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#56 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#57 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#58 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#59 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#60 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#61 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#62 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#63 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:52:11)
layout_helper.dart:52
#64 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:868:45)
flex.dart:868
#65 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:903:32)
flex.dart:903
#66 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#67 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#68 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#69 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#70 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#71 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#72 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#73 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#74 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#75 RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:554:11)
custom_paint.dart:554
#76 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#77 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#78 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#79 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1449:11)
proxy_box.dart:1449
#80 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#81 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#82 RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:297:14)
proxy_box.dart:297
#83 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#84 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#85 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:122:14)
proxy_box.dart:122
#86 RenderObject.layout (package:flutter/src/rendering/object.dart:2395:7)
object.dart:2395
#87 RenderBox.layout (package:flutter/src/rendering/box.dart:2386:11)
box.dart:2386
#88 RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:438:14)
shifted_box.dart:438
#89 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2234:7)
object.dart:2234
#90 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1016:18)
object.dart:1016
#91 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:492:19)
binding.dart:492
#92 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:905:13)
binding.dart:905
#93 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:358:5)
binding.dart:358
#94 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1284:15)
binding.dart:1284
#95 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1214:9)
binding.dart:1214
#96 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1072:5)
binding.dart:1072
#97 _invoke (dart:ui/hooks.dart:142:13)
hooks.dart:142
#98 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:359:5)
platform_dispatcher.dart:359
#99 _drawFrame (dart:ui/hooks.dart:112:31)
hooks.dart:112
(elided 2 frames from class _AssertionError)
(elided:2
The following RenderObject was being processed when the exception was fired: _RenderListTile#bdbd6 relayoutBoundary=up12 NEEDS-PAINT:
creator: _ListTile ← IconButtonTheme ← IconTheme ← Builder ← MediaQuery ← Padding ← SafeArea ←
Builder ← Padding-[GlobalKey#6ade2] ← Ink ← Semantics ← Listener ← ⋯
parentData: offset=Offset(16.0, 0.0) (can use size)
constraints: BoxConstraints(w=21.6, 0.0<=h<=Infinity)
size: Size(24.0, 136.0)
This RenderObject had the following descendants (showing up to depth 5):
title: RenderParagraph#83259 relayoutBoundary=up13 NEEDS-PAINT
text: TextSpan
trailing: RenderSemanticsAnnotations#b31f9 relayoutBoundary=up13 NEEDS-PAINT
child: RenderExcludeSemantics#0dcba relayoutBoundary=up14 NEEDS-PAINT
child: RenderConstrainedBox#8b00f relayoutBoundary=up15 NEEDS-PAINT
child: RenderPositionedBox#651a1 NEEDS-PAINT
child: RenderParagraph#9243c relayoutBoundary=up1 NEEDS-PAINT
════════════════════════════════════════════════════════════════════════════════════════════════════Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.10.0, on macOS 13.3.1 22E772610a darwin-arm64, locale en-US)
• Flutter version 3.10.0 on channel stable at /Users/dalenjohnson/Developer/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 84a1e904f4 (2 days ago), 2023-05-09 07:41:44 -0700
• Engine revision d44b5a94c9
• Dart version 3.0.0
• DevTools version 2.23.1
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
• Android SDK at /Users/dalenjohnson/Library/Android/sdk
• Platform android-33, build-tools 33.0.0
• Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS (Xcode 14.3)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Build 14E222b
• CocoaPods version 1.12.0
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 2022.1)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
[✓] VS Code (version 1.78.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.64.0
[✓] Connected device (3 available)
• iPhone 14 Pro Max (mobile) • 9B35DE3E-8844-43EA-ABC2-D440C9A957EE • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
• macOS (desktop) • macos • darwin-arm64 • macOS 13.3.1 22E772610a darwin-arm64
• Chrome (web) • chrome • web-javascript • Google Chrome 113.0.5672.92
[✓] Network resources
• All expected network resources are available.
• No issues found!