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');以下程式碼會產生此診斷資訊,因為 myExternalPreview 是 external 的
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');
}常見修復方法
#建立一個專用的、公開的、靜態可訪問的、顯式定義的建構函式、頂級函式或類成員以用作預覽