Require giving a GlobalKey to UniqueComponent

Having UniqueComponent automatically generate its own key is a trap. If
anyone ever creates a UniqueComponent in a build function (rather than
ahead of time) and forgets to pass a key, then that entire subtree is
going to be rebuilt, including layout, every time it's updated. Since
there's basically no way for us to catch this, we should at least force
the author to see the explicit "new GlobalKey()" call in their code.
This commit is contained in:
Hixie 2015-09-28 11:53:03 -07:00
parent 64dfb8496c
commit 5487b95472

View File

@ -5,7 +5,9 @@
import 'package:sky/src/fn3.dart'; import 'package:sky/src/fn3.dart';
abstract class UniqueComponent<T extends State> extends StatefulComponent { abstract class UniqueComponent<T extends State> extends StatefulComponent {
UniqueComponent({ GlobalKey key }) : super(key: key ?? new GlobalKey()); UniqueComponent({ GlobalKey key }) : super(key: key) {
assert(key != null);
}
T createState(); T createState();