3
votes

I am working with flutter with my Mac. installed the sample code and i get the error on the flutter classes StatelessWidget, Widget, BuildContext saying that

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

How do i resolve this issue.

I tried "flutter packages get" and got the below output [ttt] flutter packages get Running "flutter packages get" in ttt... 0.5s exit code 0

Also tried "flutter doctor"

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

how to resolve this compile issue?

screenshot

4
I can't reproduce with your code. I get a " A RenderFlex overflowed by 119 pixels on the right." instead which is just a minor layout problem. Try restarting the IDE.Günter Zöchbauer
Your flutter doctor -v is full of issues - Unable to locate Android SDK. - flutter.io/docs/get-started/install/macosanmol.majhail

4 Answers

2
votes

In my case just adding this

import 'package:flutter/cupertino.dart';

cleared all the issues.

If this doesnt work check if there are unused imorts, remove it and run pub get. This should work.

1
votes

I restarted VSCODE IDE but did not worked. Even uninstalled the Dart and Flutter library also.

Then what i did is by removing the flutter library package and downloaded new package and it worked!

1
votes

Similar to @Bensal Answer

You can do it by importing

import 'package:flutter/cupertino.dart';

Or

import 'package:flutter/material.dart';

It will solve your problem

0
votes

I just had the same problem.

Make sure you have not defined or haven't imported a class that hides something from flutter (or even edited a core Flutter class like possibly J4Java's answer which is what possibly fixed that issue).

I was importing a State class by accident, removing the import made it all work again.