да, есть способ сделать это.Вы должны сделать полный перезапуск (теперь он называется «Горячий перезапуск») в коде, способ сделать это - поместить ваше приложение в статический виджет (почему статический? потому что он будет создан один раз, чтобы избежать нуля или чего-то подобноготот).и когда вы хотите сделать полный перезапуск, просто выполните горячую перезагрузку в этом виджете, после чего он перезапустит ваше приложение.Вы можете использовать его повсюду
вот так:
1 - сначала в main.dart, поместите ваше приложение в виджет Restart:
import 'package:flutter/material.dart';
import 'home.dart';
void main() {
runApp(new HotRestartController(
child: new MyApp()
));
}
2- напишите ваш hotRestartController внутри файла:
class HotRestartController extends StatefulWidget {
final Widget child;
HotRestartController({this.child});
static performHotRestart(BuildContext context) {
final _HotRestartControllerState state = context.ancestorStateOfType(const TypeMatcher<_HotRestartControllerState>());
state.performHotRestart();
}
@override
_HotRestartControllerState createState() => new _HotRestartControllerState();
}
class _HotRestartControllerState extends State<HotRestartController> {
Key key = new UniqueKey();
void performHotRestart() {
this.setState(() {
key = new UniqueKey();
});
}
@override
Widget build(BuildContext context) {
return new Container(
key: key,
child: widget.child,
);
}
}
3 - в любое время, в любое место, куда вы можете импортировать main.dart, и вызывайте "executeHotRestart", используя:
HotRestartController.restartApp(context)
веселиться!