Flutter热重装无法显示更改

时间:2019-12-10 20:40:09

标签: flutter flutter-layout

我有两个文件,main.dartsections.dart

我在section.dart中定义了一些小部件,并在main.dart文件中使用了它们,当我运行flutter run时,命令更改会显示在屏幕上,但是当我按下R时,进行热装,屏幕上没有任何变化。

main.dart:

import 'package:flutter/material.dart';
import 'sections.dart';

void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
  return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Share IDEASS',
      home: Scaffold(
        appBar: AppBar(
          title: Text('IDEASs'),
        ),
        body: ListView(
          children: [
           labelsSection,
          ],
        ),
      ),
    );
  }
}

Sections.dart:

import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {

  Widget build(BuildContext context) {
   return MaterialApp(
      title: 'Share IDEAS',

    );
  }
}

Column labelSectionMethod(color,IconData icon, String label,String numbers){
  return Column(
    children: <Widget>[
      Icon(icon, color:color),
      Container(
        child: Text(label,
        style: TextStyle(color: color
        ),
        ),
      ),
      Container(
        child:Text(numbers,
      style:TextStyle(color:color
      ),
      ),
      ),
    ],
  );
}

    Widget labelsSection=Container(
    child: Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        labelSectionMethod(Colors.red,Icons.supervised_user_circle,"IDEASS","35"),
        labelSectionMethod(Colors.red,Icons.favorite,"LIKE","22"),
        labelSectionMethod(Colors.red,Icons.data_usage,"STREAK","12"),
      ],
    ),
    );

也许是因为我在重复:

 return MaterialApp(
title: 'Share IDEAS',
    );

sections.dart中,或与主要功能有关。

  

更新:

我将main.dart文件中的sections.dart文件的内容移动了,但仍无法进行热重装。

5 个答案:

答案 0 :(得分:4)

将文件移动到另一个目录后,Android Studio将导入更改为绝对路径。

import 'file:///C:/Users/svenv/AndroidStudioProjects/sample_screen_collection/lib/welcome/reading_list_card.dart';

我不得不将其更改为此

import 'package:samplescreencollection/components/reading_list_card.dart';

答案 1 :(得分:1)

通常在更改大量代码,添加状态,将小部件从无状态更改为完整状态等情况下发生。执行热重启(ctrl + F5)将解决此问题。 如果仍然无法解决问题,请尝试从手机/模拟器/模拟器中删除该应用程序(关闭该应用程序,然后将其删除),然后再次运行调试/ flutter。这应该可以解决您的问题

答案 2 :(得分:1)

已向Flutter报告有关此问题,https://github.com/flutter/flutter/issues/17155#issue-319238844

基本上,这就像Flutter没有正确识别更改以生成更新的构建文件(我个人理解):

解决方案

简单的解决方案是清理项目并重建它。

我正在使用Android Studio Android Studio 3.6,以下步骤说明了如何清理Flutter项目

  1. 导航到导航栏中的工具
  2. 选择 Flutter > Flutter Clean

enter image description here

    最后,点击绿色的播放图标,再次运行项目

答案 3 :(得分:0)

有时候,抖动会与大量更改混淆,您需要执行重新启动,尤其是在与整个Appmain函数进行交互时。

您可以按Ctrl+C终止flutter run进程,然后尝试再次启动它。另外,如果您通过IntelliJ或Android Studio运行Flutter,则flutter插件将包含一项“热重启”功能,可以完成相同的操作。

答案 4 :(得分:0)

我的情况是 - Flutter 既不会热重载,也不会在断点处停止,甚至不会为 Android 模拟器提供新的构建,而 iOS 很好。

我尝试了上面的建议,但没有任何效果,花了一天时间研究这些事情。我从 Android Studio 3.x 升级到 4.1,但没有任何变化。

对我有用的是:

  • 创建一个全新的 Flutter 示例项目。
  • 验证它是否有效 - 部署了新版本、调试和热重载工作
  • 将我的项目转移到这个新项目中。这几乎涉及到替换 lib 和 .git 文件夹以及手动更新 pubspec.yaml、AndroidManifest.xml 和 Info.plist(手动文件更新花费了大部分精力,但仍然比我几天尝试制作的时间少得多再次工作)
  • 验证一切正常。