【问题标题】:StatelessWidget : Classes can only extend other classes.dart(extends_non_class) - issueStatelessWidget:类只能扩展其他类。dart(extends_non_class) - 问题
【发布时间】:2019-07-09 17:59:24
【问题描述】:

我正在使用我的 Mac 处理颤振。安装了示例代码,我得到了颤振类的错误 StatelessWidget、Widget、BuildContext 说的就是

Undefined class 'StatelessWidget'.dart(undefined_class)
Classes can only extend other classes.dart(extends_non_class)

我该如何解决这个问题。

我试过了 "flutter packages get" 得到如下输出 [ttt] 颤振包获取 在 ttt 中运行“flutter packages get”... 0.5s 退出代码 0

也试过了 “扑医生”

医生摘要(要查看所有详细信息,请运行 flutter doctor -v): [✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.3 18D109, locale en-IN) [✗] Android 工具链 - 为 Android 设备开发 ✗ 无法定位 Android SDK。 从以下位置安装 Android Studio:https://developer.android.com/studio/index.html 首次启动时,它将帮助您安装 Android SDK 组件。 (或访问 https://flutter.io/setup/#android-setup 了解详细说明)。 如果 Android SDK 已安装到自定义位置,请将 $ANDROID_HOME 设置为该位置。 您可能还想将它添加到 PATH 环境变量中。 [!] iOS 工具链 - 为 iOS 设备开发 (Xcode 10.1) ✗ libimobiledevice 和 ideviceinstaller 未安装。要使用 Brew 安装,请运行: 酿造更新 brew install --HEAD usbmuxd 酿造链接usbmuxd brew install --HEAD libimobiledevice 冲泡安装 ideviceinstaller ✗ ios-deploy 未安装。使用 Brew 安装: brew install ios-deploy ✗ 未安装 CocoaPods。 CocoaPods 用于检索 iOS 平台端的插件代码,以响应您在 Dart 端的插件使用情况。 如果不使用 CocoaPods 解决 iOS 依赖项,插件将无法在 iOS 上运行。 有关更多信息,请参阅 https://flutter.io/platform-plugins 安装: 酿造安装可可豆荚 吊舱设置 [!] Android Studio(未安装) [!] 连接的设备 !没有可用的设备 !医生发现了 4 类问题。
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  runApp(FlutterView());
}

class FlutterView extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter View',
      theme: ThemeData(
        primarySwatch: Colors.grey,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  static const String _channel = 'increment';
  static const String _pong = 'pong';
  static const String _emptyMessage = '';
  static const BasicMessageChannel<String> platform =
      BasicMessageChannel<String>(_channel, StringCodec());

  int _counter = 0;

  @override
  void initState() {
    super.initState();
    platform.setMessageHandler(_handlePlatformIncrement);
  }

  Future<String> _handlePlatformIncrement(String message) async {
    setState(() {
      _counter++;
    });
    return _emptyMessage;
  }

  void _sendFlutterIncrement() {
    platform.send(_pong);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          Expanded(
            child: Center(
              child: Text(
                'Platform button tapped $_counter time${ _counter == 1 ? '' : 's' }.',
                style: const TextStyle(fontSize: 17.0))
            ),
          ),
          Container(
            padding: const EdgeInsets.only(bottom: 15.0, left: 5.0),
            child: Row(
              children: <Widget>[
                Image.asset('assets/flutter-mark-square-64.png', scale: 1.5),
                const Text('Flutter', style: TextStyle(fontSize: 30.0)),
              ],
            ),
          ),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _sendFlutterIncrement,
        child: const Icon(Icons.add),
      ),
    );
  }
}

如何解决这个编译问题?

【问题讨论】:

标签: flutter


【解决方案1】:

我重新启动了 VSCODE IDE 但没有工作。甚至还卸载了 Dart 和 Flutter 库。

然后我所做的是删除颤振库包并下载新包,它工作!

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题。

    确保您没有定义或没有导入对颤振隐藏某些内容的类(或者甚至编辑了一个核心 Flutter 类,例如可能解决该问题的 J4Java 的答案)。

    我无意中导入了一个 State 类,删除导入后一切都恢复了。

    【讨论】:

      【解决方案3】:

      在我的情况下,只需添加这个

      import 'package:flutter/cupertino.dart';
      

      清除所有问题。

      如果这不起作用检查是否有未使用的 imort,请将其删除并运行 pub get。这应该可以。

      【讨论】:

        【解决方案4】:

        类似于@Bensal 答案

        你可以通过导入来做到这一点

        import 'package:flutter/cupertino.dart';
        

        或者

        import 'package:flutter/material.dart';
        

        它会解决你的问题

        【讨论】:

          猜你喜欢
          • 2018-12-30
          • 2022-08-19
          • 1970-01-01
          • 2018-02-02
          • 1970-01-01
          • 2021-12-15
          • 1970-01-01
          • 2011-05-02
          • 2021-09-04
          相关资源
          最近更新 更多