Dart has null aware operators ((?.), (??), (??=)) like optional in Swift to check null, so I don't understand what do you mean by bad type system null.
Flutter is definitely nice, but if your target is mainly iOS it's way better to use native iOS development. Even after introducing SwiftUI we can avoid the terrible and sometimes complex auto layout system.
Overall I personally find, Flutter is easier to develop cross platform mobile apps with limitation. Native iOS definitely better than native android development. But I hope everything will be better overtime. There is no perfect thing in programming world. Most of the developers have complain less or more.