如何解决某些图像上的抖动 "Infinity or NaN toInt"

How to solve flutter "Infinity or NaN toInt" on some images

我有一个应该只显示图像的简单项目。我应该提一下,这是 flutter 的新手。

下面是main.dart

import 'package:flutter/material.dart';
import 'package:flutter_shoe/ColorHolder.dart';
import 'package:flutter_shoe/home_page.dart';
import 'package:flutter_shoe/profile_page.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primaryColor: primaryColor,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: HomePage(),
    );
  }
}

这里是 HomepageClass

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: Icon(Icons.menu),
        title: Text("Home"),
        centerTitle: true,
        actions: [
          Icon(Icons.circle_notifications),
        ],
      ),
      body: Container(
        child: Image.asset(
          "assets/imgs/curved.png",
          // "assets/imgs/doc.jpg",
          width: 500,
          height: 200,
        ),
      ),
    );
  }
}

上面的代码给我错误

Unsupported operation: Infinity or NaN toInt

错误指向包含图像资源的行。

我试过使用几个不同的图像,它对一些图像效果很好,但对其他图像却出错。我需要它始终处理所有图像。

示例工作图像的尺寸为 626 x 626,为 jpg 示例非工作图像的尺寸为 1080 x 768,为 png

我试过用 Expandable 替换 container。 我已将高度和宽度值附加到容器。还是行不通 我已将图像的宽度和高度更改为 double.maxFinite。不工作。

我在他们的文档中找不到任何有用的东西。

有人帮我知道我哪里错了。

您是否将资产放入 pubspec.yaml 文件?

flutter:
  assets:
    - assets/imgs/

我无法重现您的错误,建议您尝试以下代码:


body: SingleChildScrollView(
        child: Container(
           child: Image.asset("assets/imgs/curved.png",
                fit: BoxFit.cover,
                width: 500,
                height: 200,
             ),
          ),
       ),

是否使用 Image.network 也会给您一个错误。请检查下图是否报错:

Image.network("https://placeimg.com/1080/768/any",
        width: 500, height: 200)

我解决了。原来我不应该在添加新资产后使用 hot-reload 。我所需要的只是停止该项目并 re-run 重新开始。