11

Being a total beginner I am trying out various flutter feature and I am stuck at running the main.dart due to errors in the widget_test.dart file. Please point out if the error is due to some other reason.

main.dart

import 'package:flutter/material.dart';
 void main(){
   var app = MaterialApp(
     title: 'FlutterApp',
     debugShowCheckedModeBanner: true,
     theme: ThemeData(
        primaryColor: Colors.black12,
        accentColor: Colors.orange,
     ),
     home: Scaffold(
       appBar: AppBar(
         title: Text('Stateless'),
         backgroundColor: Colors.black,
         ),
   ),
   );
   runApp(app);
 }

widget_test.dart

// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:stateless/main.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MyApp()); //error over here

    // Verify that our counter starts at 0.
    expect(find.text('0'), findsOneWidget);
    expect(find.text('1'), findsNothing);

    // Tap the '+' icon and trigger a frame.
    await tester.tap(find.byIcon(Icons.add));
    await tester.pump();

    // Verify that our counter has incremented.
    expect(find.text('0'), findsNothing);
    expect(find.text('1'), findsOneWidget);
  });
}

This is my very first question and I a very sorry if I couldn't place the question in a proper way

joel
  • 263
  • 1
  • 5
  • 16

9 Answers9

12

It would be better if you also told us the error message you got. However, from what I see, there is no MyApp defined in widget_test.dart.

You can define a MyApp widget in another file and then import it in your widget_test.dart.

An example would be:

another_file.dart

class MyApp extends StatelessWidget {
  const MyApp({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
     title: 'FlutterApp',
     debugShowCheckedModeBanner: true,
     theme: ThemeData(
        primaryColor: Colors.black12,
        accentColor: Colors.orange,
     ),
     home: Scaffold(
       appBar: AppBar(
         title: Text('Stateless'),
         backgroundColor: Colors.black,
         ),
   ),);
  }
}

widget_test.dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:stateless/another_file.dart';

void main() {
  testWidgets('My test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(MyApp());
  });
}
wenolOaR
  • 256
  • 3
  • 10
  • 1
    Thank you for your answer. It did work. But after analysing the code and error I found out that the error was in this line : primaryColor: Colors.black12. Colors.black12 is not supported for some reason unknown to me. – joel Jun 09 '19 at 18:08
  • 1
    Did you import material.dart ? – wenolOaR Jun 13 '19 at 07:56
  • in my case i used the same solution and after i rename the another file to main again and it work it seems it is a IDE bug – Abdessamad Jadid Jul 19 '20 at 01:36
3

It's simple, you can just replace MyApp name with your class name in widget_test.dart file.

eg. replace MyApp with app (in your case) in widget_test.dart file

grg
  • 5,023
  • 3
  • 34
  • 50
Vijay Singh
  • 320
  • 1
  • 3
  • 10
2

I just figured out, the solution is just putting in your actual Stateful Widget name instead of the default 'MyApp' given by the default Tap Counter app!

Tejas MD
  • 21
  • 1
  • looking long time for me to find this answer.. this never mentioned clearly in the doc if i'm not mistaken.. thanks! – thekucays Apr 06 '23 at 08:56
2

After you create a file named another_file.dart

You must add:

import '../test/another_file.dart';

in widget_test.dart

Lemon
  • 1,184
  • 11
  • 33
ehabo73
  • 21
  • 1
0

Your App name is MaterialApp in the main.dart file so as in widget_test.dart file change the MyApp name to MaterialApp as simple as that.

I'am also new to flutter but solving these kind of small problem's gives me a heads up, instead of giving solutions which are a little confusing to follow.

Rohan Sadnani
  • 11
  • 1
  • 5
  • MaterialApp is the widget provided by the flutter framework. Creating that in the test will only test the framework instead of the app. – spkersten Oct 04 '20 at 07:15
0

Solution

At top of your pubspec.yaml make sure to verify the name of your project is a match with the name of the imported package listed in your import statement of the test widget.

After you verify this information run flutter pub get to sync the dependencies again.

In my case this resolved the improper name resolution.

Tommie C.
  • 12,895
  • 5
  • 82
  • 100
0

I was facing the same issue but turns out it was because I was using an older version.

doing flutter upgrade or fluter upgrade --force will update your flutter version and it shouldn't show the problem anymore

-1

Try this:

flutter packages get
  • [A code-only answer is not high quality](//meta.stackoverflow.com/questions/392712/explaining-entirely-code-based-answers). While this code may be useful, you can improve it by saying why it works, how it works, when it should be used, and what its limitations are. Please [edit] your answer to include explanation and link to relevant documentation. – Stephen Ostermiller Feb 07 '23 at 15:46
-2

Just remove all lines in widget_test.dart file. Empty it.. It is used for testing widgets (not necessary)......