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
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());
});
}
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
After you create a file named another_file.dart
You must add:
import '../test/another_file.dart';
in widget_test.dart
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With