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 eb6f2f069e
commit 68c57fb67f

View File

@ -5,7 +5,9 @@
import 'package:sky/src/fn3.dart';
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();