跳到主要內容

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');
}

常見修復方法

#

建立一個專用的、公開的、靜態可訪問的、顯式定義的建構函式、頂級函式或類成員以用作預覽