我正在使用Mac进行抖动。安装了示例代码,我在flutter类上得到了错误 StatelessWidget,Widget,BuildContext表示
Undefined class 'StatelessWidget'.dart(undefined_class)
Classes can only extend other classes.dart(extends_non_class)
我该如何解决此问题。
我尝试过 “ flutter package get” 并获得以下输出 [ttt]扑扑包得到 在0.5秒钟内运行“ flutter程序包获取” ... 0.5s 退出代码0
也尝试过 “颤抖的医生”
Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.3 18D109, locale en-IN) [✗] Android toolchain - develop for Android devices ✗ Unable to locate Android SDK. Install Android Studio from: https://developer.android.com/studio/index.html On first launch it will assist you in installing the Android SDK components. (or visit https://flutter.io/setup/#android-setup for detailed instructions). If Android SDK has been installed to a custom location, set $ANDROID_HOME to that location. You may also want to add it to your PATH environment variable. [!] iOS toolchain - develop for iOS devices (Xcode 10.1) ✗ libimobiledevice and ideviceinstaller are not installed. To install with Brew, run: brew update brew install --HEAD usbmuxd brew link usbmuxd brew install --HEAD libimobiledevice brew install ideviceinstaller ✗ ios-deploy not installed. To install with Brew: brew install ios-deploy ✗ CocoaPods not installed. CocoaPods is used to retrieve the iOS platform side's plugin code that responds to your plugin usage on the Dart side. Without resolving iOS dependencies with CocoaPods, plugins will not work on iOS. For more info, see https://flutter.io/platform-plugins To install: brew install cocoapods pod setup [!] Android Studio (not installed) [!] Connected device ! No devices available ! Doctor found issues in 4 categories.
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),
),
);
}
}
如何解决此编译问题?
答案 0 :(得分:1)
类似于@Bensal 答案
您可以通过导入来实现
import 'package:flutter/cupertino.dart';
或
import 'package:flutter/material.dart';
它会解决你的问题
答案 1 :(得分:0)
我重新启动了VSCODE IDE,但是没有用。甚至还卸载了Dart和Flutter库。
然后我所做的是通过删除flutter库软件包并下载新软件包,它起作用了!
答案 2 :(得分:0)
我只是遇到了同样的问题。
确保您没有定义或没有导入一个对flutter隐藏一些东西的类(甚至编辑了一个核心Flutter类,例如J4Java的答案,这也许可以解决该问题)。
我是偶然导入一个State class,取消了导入使得它再次起作用。
答案 3 :(得分:0)
就我而言,只需添加
import 'package:flutter/cupertino.dart';
清除了所有问题。
如果这不起作用,请检查是否有未使用的Imort,将其删除并运行pub get。这应该起作用。