As you can see from the image below it is successfully fetching data from the API, but every time I click on TextFormField to enter text, It seems like it is calling another state or refreshing the page, That’s why I cannot type any message.
Note: Without BlocBuilder TextFormField is working fine.
I am using.
flutter_bloc: ^8.1.5
Android studio Hedgehog | 2023.1.1 Patch 2
Flutter 3.16.5
Dart 3.2.3
late TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = TextEditingController();
BlocProvider.of<FetchSubcategoryByIdCubit>(context).fetchSubcategoryByCategoryIdCubit(context, categoryId: '123abcd');
}
@override
void dispose() {
super.dispose();
_controller.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocBuilder<FetchSubcategoryByIdCubit, FetchSubcategoryByIdState>(
builder: (BuildContext context, FetchSubcategoryByIdState state) {
if (state is FetchSubcategoryByIdSuccess) {
final data = state.categories;
return Padding(
padding: const EdgeInsets.all(10.0),
child: ListView(
children: <Widget>[
const SizedBox(height: 32),
TextFormField(
controller: _controller,
decoration: InputDecoration(
hintText: 'Enter title',
),
),
const SizedBox(height: 32),
Text('SUCCESS $data'),
],
),
);
}
return Center(child: CircularProgressIndicator.adaptive());
},
),
);
}
Cubit class below
class AddSubcategoryCubit extends Cubit<AddSubcategoryState> {
final AddSubcategoryUseCase addSubcategoryUseCase;
AddSubcategoryCubit({
required this.addSubcategoryUseCase,
}) : super(AddSubcategoryInitial());
Future<void> addSubcategoryCubit(context, {required TabBarModel? model, required String subCategoryName, required int arrangement}) async {
emit(AddSubcategoryLoading());
try {
await addSubcategoryUseCase.call(model!.categoryId, subCategoryName, arrangement);
emit(AddSubcategorySuccess());
} catch (e) {
emit(AddSubcategoryFailure());
}
}
}