class SnackBarPage extends StatelessWidget {
const SnackBarPage({super.key});
@override
Widget build(BuildContext context) {
return Center(
child: ElevatedButton(
onPressed: () {
final snackBar = SnackBar(
content: const Text('Yay! A SnackBar!'),
action: SnackBarAction(
label: 'Undo',
onPressed: () {
// Some code to undo the change.
},
),
);
// Find the ScaffoldMessenger in the widget tree
// and use it to show a SnackBar.
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
child: const Text('Show SnackBar'),
),
);
}
}
上面是我想要翻译成ClojureDart的代码。然而,ClojureDart是Clojure的一种方言,Clojure是一种函数式语言,
找到!我不得不使用cljd.flutter.alpha
库导出f/widget
,并将其包裹在脚手架周围。然后,在小部件中,我必须对我想要继承的小部件使用inherit
关键字,在我的例子中是ScaffoldMessenger
。这样做之后,我可以使用一个具有kebab-case名称的变量访问ScaffoldMessenger
对象。虽然没有看到它可能会令人困惑,但它给出了这样的内容:
(f/widget
:inherit [m/ScaffoldMessenger]
(m/Scaffold
...
:onPressed (.showSnackBar scaffold-messenger snackbar)
...))
scaffold-messenger
变量对应于m/ScaffoldMessenger
,snackbar
是返回m/SnackBar
小部件的函数。
<代码>代码>