跳到主要内容

invalid_widget_preview_application

“@Preview(...)” 注解只能应用于公开的、静态可访问的构造函数和函数。

描述

#

当 “@Preview(...)” 注解应用于无效的 widget 预览目标时,分析器会产生此诊断信息。Widget 预览只能应用于公开的、静态可访问的、显式定义的构造函数和函数。

示例

#

以下代码会产生此诊断信息,因为 _myPrivatePreview 是私有的

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

// Invalid application to private top-level function.
@Preview()
// ignore: unused_element
Widget _myPrivatePreview() => Text('Foo');

以下代码会产生此诊断信息,因为 myExternalPreviewexternal

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';


// Invalid application to an external function.
@Preview()
external Widget myExternalPreview();

以下代码会产生此诊断信息,因为 PublicWidget._() 是私有的

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

class PublicWidget extends StatelessWidget {
  // Invalid application to a private constructor.
  @Preview()
  PublicWidget._();

  @override
  Widget build(BuildContext) => Text('Foo');
}

以下代码会产生此诊断信息,因为 instancePreview 是一个实例方法

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

class PublicWidget extends StatelessWidget {
  // Invalid application to a instance member.
  @Preview()
  Widget instancePreview() => PublicWidget();

  @override
  Widget build(BuildContext context) => Text('Foo');
}

以下代码会产生此诊断信息,因为 _PrivateWidget 是私有的

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

// ignore: unused_element
class _PrivateWidget extends StatelessWidget {
  // Invalid application to a constructor of a private class.
  @Preview()
  _PrivateWidget();

  @override
  Widget build(BuildContext context) => Text('Foo');
}

以下代码会产生此诊断信息,因为 _PrivateWidget 是私有的

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

// ignore: unused_element
class _PrivateWidget extends StatelessWidget {
  // Invalid application to a static method of a private class.
  @Preview()
  Widget privateStatic() => _PrivateWidget();

  @override
  Widget build(BuildContext context) => Text('Foo');
}

以下代码会产生此诊断信息,因为 AbstractWidget 是一个 abstract

dart
import 'package:flutter/widgets.dart';
import 'package:flutter/widget_previews.dart';

abstract class AbstractWidget extends StatelessWidget {
  // Invalid application to a constructor of an abstract class.
  @Preview()
  AbstractWidget();

  @override
  Widget build(BuildContext context) => Text('Foo');
}

常见修复方法

#

创建一个专用的、公开的、静态可访问的、显式定义的构造函数、顶级函数或类成员以用作预览