【发布时间】:2022-06-26 03:11:13
【问题描述】:
我已经阅读了几篇关于“查找已停用的小部件的祖先是不安全的”错误的 stackoverflow 帖子,但找不到有效的答案。
我尝试使用脚手架设置全局键,并使用 WidgetsBinding.instance.addPostFrameCallback() 失败。
我很确定我在做一些愚蠢且易于修复的事情,但我不知道是什么。
这是一个简单版本的代码,当您从 PhotoViewPage (photo_view package) 返回时复制错误:
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(),
),
);
}
}
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"));
}
}
【问题讨论】:
-
您是否尝试过推送 PhotoView 以外的其他路由?
-
同样的问题。
-
我在升级到 Flutter 3 后也遇到了同样的问题。之前,它没有出现这些错误