There is no way that root widget couldn't exists. Here is what how Root Widget is determined
1. If files passed to Builder contains Root Widget, then Builder will return it and that will be used as root widget.
2. If App has App.root or its App.build() returns a widget then that will be used as root widget.
3. If no root widget is found out, then user will select from the group of class rules detected and the selected one's widget will be used as a root widget.
So, there is always a root widget.