この書き方で合っていますでしょうか?
今イチrequiredやlateの挙動を理解しきれておりません

class StructTest {
StructTest({this.a = 0, this.b = 0, required this.st});

final int a;
final int b;
late StructTestSub st;
}

class StructTestSub {
StructTestSub({this.c = 0, this.d = 0});

final int c;
final int d;
}

final st = List<StructTest>.filled(10, StructTest(st: StructTestSub()));