Thanks to visit codestin.com
Credit goes to github.com

Skip to content

FadeInImage throws null pointer exception (Flutter 3.3) #111011

Closed
@ipcjs

Description

@ipcjs

FadeInImage throws null pointer exception when switching from a cached image to an uncached image

It is possible that this PR is causing the problem.

Steps to Reproduce

  1. Execute flutter run on the code sample
  2. Click the FloatingActionButton to switch images

Expected results:
Switch images normally.

Actual results:
Throwing exceptions: Null check operator used on a null value
image

Code sample

demo_fade_in_image_null_3.zip

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

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

const _kImages = [
  'https://pub.dev/static/hash-t3bgi1vk/img/landing-01.webp',
  'https://pub.dev/static/hash-t3bgi1vk/img/landing-02.webp',
  'https://pub.dev/static/hash-t3bgi1vk/img/landing-03.webp',
];

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FutureBuilder<void>(
          // Preload the first image
          future: precacheImage(NetworkImage(_kImages[0]), context),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              return const Material(
                  child: Center(child: CircularProgressIndicator()));
            }
            return const MyHomePage(title: 'Flutter Demo Home Page');
          }),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            FadeInImage.memoryNetwork(
              placeholder: kTransparentImage,
              image: _kImages[_counter % _kImages.length],
            ),
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        // Click the button to switch images
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}
Logs

Full log

[+8343 ms] E/SurfaceSyncer( 8318): Failed to find sync for id=0
[   +1 ms] E/SurfaceSyncer( 8318): Failed to find sync for id=1
[+3459 ms] 
                    ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
                    The following _CastError was thrown building _AnimatedFadeOutFadeIn(duration: 1000ms, dirty, state:
                    _AnimatedFadeOutFadeInState#8c208(ticker inactive, targetOpacity: null, placeholderOpacity: null)):
                    Null check operator used on a null value

                    The relevant error-causing widget was:
                      FadeInImage
                      FadeInImage:file:///K:/GitHub/@flutter/demos/demo_fade_in_image_null_3/lib/main.dart:66:25

                    When the exception was thrown, this was the stack:
                    #0      _AnimatedFadeOutFadeInState.build (package:flutter/src/widgets/fade_in_image.dart:542:70)
                    #1      StatefulElement.build (package:flutter/src/widgets/framework.dart:4992:27)
                    #2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4878:15)
                    #3      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #4      Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #5      StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #6      Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #8      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #9      Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #10     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #11     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #12     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
                    #13     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #14     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #15     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #16     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #17     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #18     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #19     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5904:32)
                    #20     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
                    #21     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #22     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
                    #23     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #24     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #25     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #26     StatelessElement.update (package:flutter/src/widgets/framework.dart:4956:5)
                    #27     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #28     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #29     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #30     StatelessElement.update (package:flutter/src/widgets/framework.dart:4956:5)
                    #31     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #32     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #33     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #34     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #35     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #36     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #37     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #38     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #39     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #40     RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5904:32)
                    #41     MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
                    #42     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #43     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #44     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #45     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #46     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #47     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #48     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #49     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #50     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #51     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #52     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #53     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #54     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #55     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #56     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #57     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #58     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #59     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #60     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #61     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #62     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #63     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #64     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #65     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #66     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
                    #67     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #68     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #69     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #70     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #71     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #72     SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
                    #73     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #74     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #75     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #76     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #77     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #78     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #79     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #80     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #81     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #82     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #83     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #84     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #85     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #86     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #87     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #88     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #89     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #90     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #91     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #93     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #94     ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #95     Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #96     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #97     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #98     Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #99     StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #100    Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #101    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #102    Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #103    ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
                    #104    Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #105    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #106    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #107    Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #108    StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
                    #109    Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
                    #110    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
                    #111    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
                    #112    Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
                    #113    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:19)
                    #114    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
                    #115    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
                    #116    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
                    #117    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
                    #118    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1015:5)
                    #119    _invoke (dart:ui/hooks.dart:148:13)
                    #120    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
                    #121    _drawFrame (dart:ui/hooks.dart:115:31)

                    ════════════════════════════════════════════════════════════════════════════════════════════════════
[  +42 ms] 
           Another exception was thrown: A RenderFlex overflowed by 99282 pixels on the bottom.
[ +711 ms] 
                    Another exception was thrown: Null check operator used on a null value
Analyzing demo_fade_in_image_null_3...                                  
No issues found! (ran in 2.4s)
[√] Flutter (Channel stable, 3.3.0, on Microsoft Windows [版本 10.0.22622.590], locale zh-CN)
    • Flutter version 3.3.0 on channel stable at K:\SDK\flutter-stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ffccd96b62 (7 days ago), 2022-08-29 17:28:57 -0700
    • Engine revision 5e9e0e0aa8
    • Dart version 2.18.0
    • DevTools version 2.15.0
    • Flutter download mirror https://storage.flutter-io.cn

[√] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
    • Android SDK at C:\SDK\android-sdk
    • Platform android-33, build-tools 32.0.0
    • ANDROID_HOME = C:\SDK\android-sdk
    • Java binary at: C:\SDK\android-studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.11.15)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.11.32510.428
    • Windows 10 SDK version 10.0.18362.0

[√] Android Studio (version 2021.2)
    • Android Studio at C:\SDK\android-studio
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.12+7-b1504.28-7817840)

[√] IntelliJ IDEA Community Edition (version 2022.2)
    • IntelliJ at C:\Users\ipcjs\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\222.3739.54
    • Flutter plugin version 70.0.5
    • Dart plugin version 222.3739.24

[√] VS Code (version 1.71.0)
    • VS Code at C:\Users\ipcjs\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.48.0

[√] Proxy Configuration
    • HTTP_PROXY is set
    • NO_PROXY is
      localhost,127.0.0.1,::1,192.168.0.230,dl.google.com,maven.aliyun.com,cdn.npm.taobao.org,registry.npm.taobao.org,npmmirror.com,registry.npmmirror.com,storage.flutter-io.cn,pub.flutter-io.cn,gitee.com,engdownload.ea
      ssos.cn,upos-hz-mirrorakam.akamaized.net,www.bmtasmartbus.com,mirrors.tuna.tsinghua.edu.cn,amappc.oss-cn-zhangjiakou.aliyuncs.com,lbsyun-baidu.cdn.bcebos.com,a.amap.com,cdn.ipcjs.top,baidu.com,mirrors.aliyun.com,a
      pple.com
    • NO_PROXY contains localhost
    • NO_PROXY contains ::1
    • NO_PROXY contains 127.0.0.1

[√] Connected device (4 available)
    • Pixel 6 Pro (mobile) • 192.168.1.17:41017 • android-arm64  • Android 13 (API 33)
    • Windows (desktop)    • windows            • windows-x64    • Microsoft Windows [版本 10.0.22622.590]
    • Chrome (web)         • chrome             • web-javascript • Google Chrome 104.0.5112.102
    • Edge (web)           • edge               • web-javascript • Microsoft Edge 101.0.1210.53

[√] HTTP Host Availability
    • All required HTTP hosts are available

Metadata

Metadata

Assignees

Labels

a: animationAnimation APIsc: crashStack traces logged to the consolec: regressionIt was better in the past than it is nowfound in release: 3.3Found to occur in 3.3found in release: 3.4Found to occur in 3.4frameworkflutter/packages/flutter repository. See also f: labels.has reproducible stepsThe issue has been confirmed reproducible and is ready to work onr: fixedIssue is closed as already fixed in a newer version

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions