代码:
@override
Widget build(BuildContext context) {
const one = const SizedBox();
const two = const SizedBox();
print('${identical(one, two)}'); // prints false, should print true
return Container();
}
我做错什么了吗?
答案 0 :(得分:0)
不,您没有做错什么。 答案是错误的,仅仅是因为它们存储在内存中时是两个完全独立的对象。
用于检查相等性的相同方法类似,仅查看基础对象或引用变量是否相同,而不是它们所属的类。
证明:
Widget build(BuildContext context) {
const one = const SizedBox();
const two = const SizedBox();
print(one.hashCode);
print(two.hashCode);
print('${identical(one, two)}'); //
print('${one==two?'t':'f'}');
return MaterialApp(home: Container(child: Text('_'),));
输出:
I/flutter ( 3657): 779669181
I/flutter ( 3657): 731265968
I/flutter ( 3657): false
I/flutter ( 3657): f