如何在 Child 小部件中定义 Navigator.pop() 响应类型
How to define Navigator.pop() response type in Child widget
Parent 小部件
String pincode = await Navigators.root.currentState.push(
MaterialPageRoute<String>(
builder: (context) => ChildWidget(),
),
);
Child 小部件
Navigators.root.currentState.pop(pincode);
我的顾虑:
- 如果有人将 Child
.pop
响应更改为 bool
。
IDE 永远不会知道并在 Parent 小部件中显示警告。
- 如果您不研究 Child 小部件实现,
你不会知道它是什么类型 return.
当前解
class ChildResult {
final String pincode;
ChildResult({ this.pincode });
}
class Child extends HookWidget {
...
Navigators.root.currentState.pop(ChildResult(pincode: pincode));
...
}
我目前的解决方案是创建一个[Widget]Result
class,
并告诉我的同事对所有小部件保持相同的做法,
所以至少我可以预览 IDE.
中的值名称/类型
还有其他解决办法吗?
据我所知,目前无法为 Navigator 上的 pop 函数定义类型。当您调用 pop 时,类型是动态的,因为它不知道它将被弹出到堆栈中的哪个页面(小部件)。
Parent 小部件
String pincode = await Navigators.root.currentState.push(
MaterialPageRoute<String>(
builder: (context) => ChildWidget(),
),
);
Child 小部件
Navigators.root.currentState.pop(pincode);
我的顾虑:
- 如果有人将 Child
.pop
响应更改为bool
。 IDE 永远不会知道并在 Parent 小部件中显示警告。 - 如果您不研究 Child 小部件实现, 你不会知道它是什么类型 return.
当前解
class ChildResult {
final String pincode;
ChildResult({ this.pincode });
}
class Child extends HookWidget {
...
Navigators.root.currentState.pop(ChildResult(pincode: pincode));
...
}
我目前的解决方案是创建一个[Widget]Result
class,
并告诉我的同事对所有小部件保持相同的做法,
所以至少我可以预览 IDE.
还有其他解决办法吗?
据我所知,目前无法为 Navigator 上的 pop 函数定义类型。当您调用 pop 时,类型是动态的,因为它不知道它将被弹出到堆栈中的哪个页面(小部件)。