jit*_*555 22 android ios android-studio flutter
在 mac 机器上工作时,我发现热重载在 Android Studio 中不起作用。我不知道怎么了:)
这是不重新加载的代码(我将Hello world文本更改为Flutter 示例文本)
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text("Demo Project"),
),
body: Center(child: new Text("Hello World!!!")),
),
));
}
Run Code Online (Sandbox Code Playgroud)
请通过以下链接查看以下视频 https://www.dropbox.com/s/e7viujcgv8w0mtr/hot_reload.mp4?dl=0
这不会阻止我的发展,但我担心它为什么会发生。
Inv*_*vin 42
Flutter 文档说“热重载将代码更改加载到 VM 中并重新构建小部件树,保留应用程序状态;它不会重新运行 main () 或initState ()”
因此,看起来如果应用程序逻辑驻留在main 方法之外,那么热重载就可以工作。尝试像下面这样重构您的应用程序,然后重新启动(绿色按钮)。您所做的任何后续更改,将在保存时热重载。
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text("Demo Project"),
),
body: Center(child: new Text("Hello World!!!")),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
更新:如果您要添加新资产(如图像或媒体文件),则热重载将不起作用。在这些情况下,您必须重新启动应用程序。
vis*_*hwa 20
尝试这个
GitHub 上的解决方案Reloaded 0 of NNN libraries in Xms
Android Studio使用IDEA自动导入文件,像这样
import 'file///F:/flutter_project/lib/home_page.dart';
Run Code Online (Sandbox Code Playgroud)
将其更改为
import 'package:flutter_project/home_page.dart';
Run Code Online (Sandbox Code Playgroud)
在终端中,运行
flutter doctor -v
flutter upgrade
另外,尝试File > Invalidate Caches / Restart...
从 Android studio 菜单
小智 5
如果我没记错的话,热重载会调用小部件的构建方法,因为您所做的更改不是在构建方法内进行的,所以它不会更改屏幕中的任何内容。
尝试更改 MyWidget Build 方法内的短信并查看它是否有效。
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: new Text("Demo Project"),
),
body: new MyWidget(),
),
));
}
class MyWidget extends StatelessWidget {
const MyWidget({
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Center(child: new Text("Hello World!!!"));
}
}
Run Code Online (Sandbox Code Playgroud)
用StatefulWidget
下面代码中显示的类似代码包裹您的代码。这在观看旧教程时可能会令人困惑,因为它曾经在早期的 Flutter 版本中没有它。
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Demo Project"),
),
body: Center(child: new Text("Hello World!!!")),
);
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,它只是将整体提取MaterialApp
到它自己的无状态中Widget
。
前 -
void main() {
runApp(MaterialApp(
home: Scaffold(
backgroundColor: Colors.teal,
body: SafeArea(
child: Container(
color: Colors.white,
child: Text("Helloo"),
height: 100,
width: 100,
margin: EdgeInsets.all(20),
)),
),
));
}
Run Code Online (Sandbox Code Playgroud)
后 -
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: Colors.teal,
body: SafeArea(
child: Container(
color: Colors.white,
child: Text("Helloo"),
height: 100,
width: 100,
margin: EdgeInsets.all(20),
)),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只是在 main 函数中定义整个应用程序,甚至 VS Code 也会抱怨。
解决了!享受 :)
归档时间: |
|
查看次数: |
19690 次 |
最近记录: |