flutter / flutter/devtools

Document implications of tracking widget creation, and use of --no-track-widget-creation flag

Open
#2,171 17 comments 0 reactions 0 assignees View on GitHub
cost: high P3 screen: inspector
Dominant language
Dart
Stars
1.7k
Forks
404
Avg merge
6d 17h
Merged PRs (30d)
18

Description

*@2ZeroSix commented on Apr 30, 2020, 7:51 PM UTC:*

using dart sdk shipped with flutter:

```
Flutter (Channel master, 1.18.0-9.0.pre.74, on Mac OS X 10.15.3 19D76,
locale en-RU)
• Flutter version 1.18.0-9.0.pre.74 at /Users/iam/development/flutter
• Framework revision 0d452b8305 (42 minutes ago), 2020-04-30 11:20:14 -0700
• Engine revision 2db3276573
• Dart version 2.9.0 (build 2.9.0-3.0.dev 726d3c7725)

```

this code works differently only in debug build

```dart
import 'package:flutter/widgets.dart';

void main() {
final generatedListOfConst = [
...{
const SizedBox(),
const SizedBox(),
},
];
print(generatedListOfConst);
}
```

expected (dev_compiler, aot, ...): `[SizedBox]`
actual (Dart VM): `[SizedBox, SizedBox]`

same result for any other Flutter widget in place of `SizedBox`, but for some reason it does work as expected for other objects

```dart
class EmptyWidget extends StatelessWidget {
const EmptyWidget({Key key}) : super(key: key);

@override
Widget build(BuildContext context) {
return Container();
}
}

class Empty {
const Empty();
}

void main() {
final generatedListOfConstWidgets = [
...{
const EmptyWidget(),
const EmptyWidget(),
},
];
print(generatedListOfConstWidgets);

final generatedListOfConst = [
...{
const Empty(),
const Empty(),
},
];
print(generatedListOfConst);

final generatedListOfStr = [
...{
'a',
'a',
},
];
print(generatedListOfStr);
}
```

Dart VM output:

```
[EmptyWidget, EmptyWidget]
[Instance of 'Empty']
[a]

```

*This issue was moved by [keertip](https://github.com/keertip) from [dart-lang/sdk#41728](https://github.com/dart-lang/sdk/issues/41728).*

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.