entry是OverlayEntry类的示例
entry?.remove();
错误
Package:flutter/src/widgets/overlay.dart': Failed assertion: line 133 pos 12: '_overlay != null':
mwkjh3gx1#
已解决
经过大量的研究尝试,我发现下面一个简单的解决方案.
entry?.remove(); entry = null;
6qftjkof2#
如果没有OverlayEntry插入到Overlay中,而你试图调用remove方法,你会得到这样的错误:Failed assertion: '_overlay != null'。所以在删除条目之前,添加一个条件来判断它是否法律的。它更像是一个黑客代码,你可以添加一个变量,如isEntryNotNull,方便和易于理解。当你在Overlay中插入一个新的OverlayEntry时,将它重新分配给entry变量,然后条件就会正常工作。
Failed assertion: '_overlay != null'
isEntryNotNull
if (entry != null) { entry.remove(); entry = null; }
fslejnso3#
试试这个,对我很有效
if (overlayEntry != null && overlayEntry.mounted) { overlayEntry?.remove(); overlayEntry = null; }
yzxexxkh4#
您可以检查是否像这样安装了覆盖
if (floatingDropdown?.mounted ?? false) { floatingDropdown?.remove(); }
a0x5cqrl5#
import React from 'react';import { render,fireEvent } from '@testing-library/react';从“”导入{ WarningAlert }。/WarningAlert';describe('WarningAlert ',()=〉{ const props = { title:'警告!',变体:'warning',inlineText:“这是一个警告”,actionHref:'https:// www.example.com :'了解更多',onClose:int n();it('renders the title ',()=〉{ const { getByText } = render(〈WarningAlert {.. props} /〉);expect(getByText(props.);});it('renders the inline text ',()=〉{ const { getByText } = render(〈WarningAlert {...props} /〉);expect(getByText(props.inlineText))。getString();});it('renders the action link with the correct href and text ',()=〉{ const { getByRole } = render(〈WarningAlert {.. props} /〉);const link = getByRole('link');expect(link).toHaveAttribute('href ',props.);expect(link)。toHaveTextContent(props.document. writeln();});it('calls the onClose function when the close button is clicked ',()=〉{ const { getByLabelText } = render(〈WarningAlert {...props} /〉); www.example.com ('Close');expect(props.public void run();}); });
5条答案
按热度按时间mwkjh3gx1#
已解决
经过大量的研究尝试,我发现下面一个简单的解决方案.
6qftjkof2#
如果没有OverlayEntry插入到Overlay中,而你试图调用remove方法,你会得到这样的错误:
Failed assertion: '_overlay != null'
。所以在删除条目之前,添加一个条件来判断它是否法律的。它更像是一个黑客代码,你可以添加一个变量,如isEntryNotNull
,方便和易于理解。当你在Overlay中插入一个新的OverlayEntry时,将它重新分配给entry变量,然后条件就会正常工作。fslejnso3#
试试这个,对我很有效
yzxexxkh4#
您可以检查是否像这样安装了覆盖
a0x5cqrl5#
import React from 'react';import { render,fireEvent } from '@testing-library/react';从“”导入{ WarningAlert }。/WarningAlert';
describe('WarningAlert ',()=〉{ const props = { title:'警告!',变体:'warning',inlineText:“这是一个警告”,actionHref:'https:// www.example.com :'了解更多',onClose:int n();
it('renders the title ',()=〉{ const { getByText } = render(〈WarningAlert {.. props} /〉);expect(getByText(props.);});
it('renders the inline text ',()=〉{ const { getByText } = render(〈WarningAlert {...props} /〉);expect(getByText(props.inlineText))。getString();});
it('renders the action link with the correct href and text ',()=〉{ const { getByRole } = render(〈WarningAlert {.. props} /〉);const link = getByRole('link');expect(link).toHaveAttribute('href ',props.);expect(link)。toHaveTextContent(props.document. writeln();});
it('calls the onClose function when the close button is clicked ',()=〉{ const { getByLabelText } = render(〈WarningAlert {...props} /〉); www.example.com ('Close');expect(props.public void run();}); });