I utilized Container and Text widgets in Flutter to create a basic example, and also incorporated a test case for my sample. However, during the test run(widget test case), I encountered a null exception as the bloc was not initialized. I have included my sample for your convenience. Is there a solution to address this issue?
main.dart
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:widget_test_case/bloc/resize_bloc.dart';
void main() => runApp(BlocProvider<ResizeBloc>(
create: (c) => ResizeBloc(),
child: MyApp(),
));
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
body: BlocBuilder<ResizeBloc, ResizeState>(builder: (context, state) {
if (state is SelectinState) {
return Builder(builder: (c) {
return Center(
child: GestureDetector(
onTap: () {
BlocProvider.of<ResizeBloc>(context).add(DummyEvent());
},
child: Text('State: ${state.items}')),
);
});
}
return GestureDetector(
onTap: () {
BlocProvider.of<ResizeBloc>(context).isSelected.value++;
BlocProvider.of<ResizeBloc>(context).add(SelectinEvent('items'));
},
child: ValueListenableBuilder(
valueListenable: BlocProvider.of<ResizeBloc>(context).isSelected,
builder: (context, value, child) => Center(
child: Column(
children: [
Container(
color: Colors.red,
width: 100,
height: 100,
),
Text(
'${BlocProvider.of<ResizeBloc>(context).isSelected.value}')
],
),
),
),
);
}),
),
);
}
}
Test case
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/mockito.dart';
import 'package:widget_test_case/bloc/resize_bloc.dart';
import 'package:widget_test_case/main.dart';
class TestBlocMock extends Mock implements ResizeBloc {}
void main() {
ResizeBloc testBloc = TestBlocMock();
group('description', () {
testWidgets('Test', (WidgetTester tester) async {
when(testBloc.stream).thenAnswer(
(_) => Stream.fromIterable(
[ResizeInitial()],
),
);
await tester.pumpWidget(
BlocProvider<ResizeBloc>(create: (c) => testBloc, child: MyApp()));
expect(find.text('State: itmes'), findsNWidgets(0));
});
});
}