#flutter #flutter-layout
#flutter #flutter-layout
Вопрос:
Горячая перезагрузка не работает в простом Hello World
примере. При попытке изменить text
, a string
, на что-то другое во время выполнения и горячей перезагрузки ничего не происходит. Я выполняю отладку на физическом устройстве и использую VSCode.
import 'package:flutter/material.dart';
void main() {
String text = "Hello world";
runApp(Center(child: new Text(text, textDirection: TextDirection.ltr)));
}
Является ли горячая перезагрузка ненадежной или я делаю что-то не так?
РЕДАКТИРОВАТЬ: выяснилось, что перезапуск приложения с помощью CTRL SHIFT F5 работал так, как и должна выполняться горячая перезагрузка.
Ответ №1:
В частности, горячая перезагрузка приводит к перестройке всех существующих виджетов. Автоматически выполняется только код, участвующий в перестройке виджетов.
https://flutter.dev/docs/development/tools/hot-reload
Это означает, что вам нужен класс виджета, который реализует build
метод, гарантирующий повторное выполнение кода при горячей перезагрузке.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
String text = "Hello world";
return Center(
child: new Text(text, textDirection: TextDirection.ltr),
);
}
}
Ответ №2:
Если вы создадите свой класс таким образом, я думаю, проблем не возникнет :
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
String text="Hello World"
return MaterialApp(
home: Scaffold(
body: Center(
child: Text(text,textDirection: TextDirection.ltr),
)));
}
}
Ответ №3:
Однако некоторые типы изменений кода не могут быть загружены горячей перезагрузкой:
- Инициализаторы глобальных переменных
- Инициализаторы статических полей
main()
Метод приложенияДля этих изменений вы можете полностью перезапустить свое приложение, не завершая сеанс отладки:
- Не нажимайте кнопку остановки; просто повторно нажмите кнопку Запуска (если в сеансе запуска) или кнопку отладки (если в сеансе отладки), или нажмите кнопку ‘горячей перезагрузки’.
Нашел это на портале разработчиков Flutter.