PhotoView 错误:查找已停用小部件的祖先是不安全的

Yoa*_*Far 18 dart flutter

我读过一些有关“查找已停用小部件的祖先不安全”错误的 stackoverflow 帖子,但找不到有效的答案。

我尝试使用脚手架设置全局键,并使用 WidgetsBinding.instance.addPostFrameCallback() 但没有成功。

我很确定我正在做一些愚蠢且容易修复的事情,但我不知道是什么。

这是代码的简单版本,当您从 PhotoViewPage ( photo_view 包)返回时,它会复制错误:

my_home_page.dart

import 'package:flutter/material.dart';
import 'package:phototest/photo_view_page.dart';


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

  @override
  Widget build(BuildContext context) {
    return TextButton(
      child: const Text("to PhotoView"),
      onPressed: () => _toPhotoView(context),
    );
  }

  void _toPhotoView(BuildContext context) {
    Navigator.of(context).push(
      MaterialPageRoute<dynamic>(
        builder: (BuildContext context) => const PhotoViewPage(),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

photo_view_page.dart

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

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

  @override
  Widget build(BuildContext context) {
    return PhotoView(imageProvider: AssetImage("assets/image.png"));
  }
}
Run Code Online (Sandbox Code Playgroud)

Sim*_*eon 34

更新- 在 photo_view 0.14中修复。

问题来自photo_view包。

pubspec.yaml中从依赖项中删除photo_view

dependencies:
  photo_view: ^0.13.0
Run Code Online (Sandbox Code Playgroud)

添加:

dependency_overrides:
  photo_view:
    git:
      url: https://github.com/bluefireteam/photo_view
      ref: master
Run Code Online (Sandbox Code Playgroud)

这样您就可以避免来自同一版本的依赖项中的错误。