是否可以将SnackBar
与CupertinoPageScaffold
一起使用?
我遇到以下错误:
Scaffold.of() called with a context that does not contain a Scaffold.
No Scaffold ancestor could be found starting from the context that was passed to Scaffold.of().
使用以下方式在子窗口小部件中调用SnackBar
:
final snackBar = SnackBar(
content: Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change!
},
),
);
// Find the Scaffold in the Widget tree and use it to show a SnackBar!
Scaffold.of(context).showSnackBar(snackBar);
答案 0 :(得分:2)
Cupertino 小部件应该是特定于 iOS 的,SnackBar
来取代 Android Toasts
,但 iOS 中没有 Android Toast
等价物,因此您不能在本机添加 SnackBar
到 CupertinoScaffold
,因为它不遵循 iOS 准则。
一种解决方案是扩展 CupertinoScaffold
并将其添加到 SnackBar
代码中。
另一个位于 Mazin Ibrahim answer,注意不建议嵌套 Scaffolds。
答案 1 :(得分:1)
您需要包含一个Scaffold
,因为CupertinoPageScaffold
不是它的子级,那么您需要将调用showSnackBar
函数的代码与{{1 }}归入Scaffold
的单独类中,因为无法从同一SnackBarBody
函数调用SnackBar
和Scaffold
。这是一个完整的工作示例:
Build