Ame*_*een 8 dart flutter hot-reload
我有一个资产文件需要处理才能使用。这个资产文件将被大量编辑,我希望每次编辑时不必重新启动应用程序。
我知道类上存在该reassemble
方法State
。但是,这需要有一个虚拟小部件来覆盖此方法并将其放在应用程序中的某个地方以获取有关热重载的通知。
class WdHotReloadNotifier extends StatefulWidget
{
final Function callback;
WdHotReloadNotifier(this.callback);
@override
State<StatefulWidget> createState() => WdHotReloadNotifierState(this.callback);
}
class WdHotReloadNotifierState extends State<WdHotReloadNotifier>
{
Function callback;
WdHotReloadNotifierState(this.callback);
@override
void reassemble()
{
super.reassemble();
callback();
}
@override
Widget build(BuildContext context) {
return Container();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样使用它:
WdHotReloadNotifier((){print("HOT REALOADED 1");}),
WdHotReloadNotifier((){print("HOT REALOADED 2");}),
Run Code Online (Sandbox Code Playgroud)
但是,将这些添加到单个页面意味着只要页面在堆栈中,它就会工作。将它们添加到多个页面意味着钩子将执行不止一次。
有没有办法在flutter中获得有关热重载的全局通知?
Rém*_*let 10
覆盖子类reassemble
上的方法State
是您想要的。但是您可以将小部件放置到不同的位置以更改行为。
考虑以下小部件,它在热重载时调用回调并且不执行任何其他操作:
class ReassembleListener extends StatefulWidget {
const ReassembleListener({Key key, this.onReassemble, this.child})
: super(key: key);
final VoidCallback onReassemble;
final Widget child;
@override
_ReassembleListenerState createState() => _ReassembleListenerState();
}
class _ReassembleListenerState extends State<ReassembleListener> {
@override
void reassemble() {
super.reassemble();
if (widget.onReassemble != null) {
widget.onReassemble();
}
}
@override
Widget build(BuildContext context) {
return widget.child;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以随意插入该小部件。
在单个页面上:
MaterialApp(
home: ReassembleListener(onReassemble: () => print("Foo"), child: Home()),
)
Run Code Online (Sandbox Code Playgroud)
或者通过包装整个应用程序来全局:
ReassembleListener(
onReassemble: () => print('foo'),
child: MaterialApp(
home: Home(),
),
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3106 次 |
最近记录: |