Document implications of tracking widget creation, and use of --no-track-widget-creation flag
- 主要语言
- Dart
- 星标
- 1.7k
- 派生
- 404
- 平均合并
- 6 天 17 小时
- 30 天内合并 PR
- 18
描述
*@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).*
贡献指南
调研方向
首先查看 issue 正文中的 --no-track-widget-creation flag 和移动后的 Dart SDK 报告。该 issue 没有指定文档文件、测试或入口点;完成意味着在约定的位置记录该 flag 的影响以及 widget 创建跟踪行为。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- dart
- 领域
- documentation
- Issue 类型
- 文档
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100