'error Looking up a deactivated widget's ancestor is unsafe

I don't know what is wrong with this, but when I click on the close icon button I get this error.

════════ Exception caught by widgets library ═══════════════════════════════════ The following assertion was thrown while finalizing the widget tree: Looking up a deactivated widget's ancestor is unsafe.

At this point the state of the widget's element tree is no longer stable.

To safely refer to a widget's ancestor in its dispose() method, save a reference to the ancestor by calling dependOnInheritedWidgetOfExactType() in the widget's didChangeDependencies() method.

this is my code

// ...
class ImageViewer extends StatefulWidget {
  List<String> imageList;
  int currentIndex;
  BoxDecoration backgroundDecoration;
  ImageViewer(
      {Key key,
      this.imageList,
      this.backgroundDecoration,
      this.currentIndex = 0})
      : super(key: key);

  @override
  _ImageViewerState createState() => _ImageViewerState();
}

class _ImageViewerState extends State<ImageViewer> {
  PageController _pageController;

  @override
  void initState() {
    // TODO: implement initState
    _pageController = PageController(initialPage: widget.currentIndex);
    super.initState();
  }

  @override
  void dispose() {
    // TODO: implement dispose
    _pageController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: ColorfulBackground(
      bottomColor: Colors.lightBlue[400],
      middleColor: Colors.purple,
      body: Stack(children: [
        PhotoViewGallery.builder(
          scrollPhysics: const BouncingScrollPhysics(),
          builder: (BuildContext context, int index) {
            return PhotoViewGalleryPageOptions(
              imageProvider: CachedNetworkImageProvider(
                widget.imageList[index],
                cacheManager: CustomCacheManager.instance,
              ),
              tightMode: true,
              maxScale: PhotoViewComputedScale.contained * 2.5,
              gestureDetectorBehavior: HitTestBehavior.translucent,
              minScale: PhotoViewComputedScale.contained * 1.0,
              initialScale: PhotoViewComputedScale.contained * 1.0,
              heroAttributes:
                  PhotoViewHeroAttributes(tag: widget.imageList[index]),
            );
          },
          itemCount: widget.imageList.length,
          backgroundDecoration: BoxDecoration(
            color: Colors.transparent,
          ),
          onPageChanged: (index) {
            setState(() {
              widget.currentIndex = index;
            });
          },
          loadingBuilder: (context, event) => Center(
            child: Container(
              width: 20.0,
              height: 20.0,
              child: CircularProgressIndicator(
                value: event == null
                    ? 0
                    : event.cumulativeBytesLoaded / event.expectedTotalBytes,
              ),
            ),
          ),
          // backgroundDecoration: widget.backgroundDecoration,
          pageController: _pageController,
          // onPageChanged: onPageChanged,
        ),

        // close icon button //////////////////////////////////

        Positioned(
          top: 40,
          left: 10,
          child: IconButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              icon: Icon(
                Icons.close_rounded,
                color: kblackcolor,
              )),
        ),
        Positioned(
            right: 40,
            bottom: 100,
            child: Container(
              padding: EdgeInsets.symmetric(horizontal: 20, vertical: 10),
              decoration: BoxDecoration(
                  color: kPrimaryColor,
                  borderRadius: BorderRadius.circular(20)),
              child: Text(
                "${widget.currentIndex + 1}/ ${widget.imageList.length}",
                style:
                    TextStyle(color: kwhitecolor, fontWeight: FontWeight.w500),
              ),
            )),
      ]),
    ));
  }
}




Solution 1:[1]

The problem is coming from photo_view package.

In pubspec.yaml remove photo_view from dependecies

dependencies:
  photo_view: ^0.13.0

Add:

dependency_overrides:
  photo_view:
    git:
      url: https://github.com/bluefireteam/photo_view
      ref: master

This way you will avoid errors in dependencies that come from the same version.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Henry Fabián Mata Araya