【发布时间】:2021-05-26 16:43:03
【问题描述】:
我正在使用不使用 bloc 作为状态管理的应用程序,并且我想添加更多功能(该功能将使用 bloc),当我尝试运行应用程序时出现此错误:
══╡ 小部件库发现异常 ╞═════════════════════════════════════════════════ ══════════ I/颤振 (17157):以下 TransportLoading 对象被抛出构建 TransportPage(脏,状态:I/flutter(17157): _TransportPageState#daf04): I/flutter (17157): 'TransportLoading' 的实例
TransportLoading 是集团中的一种状态。
这是运输集团
class TransportBloc extends Bloc<TransportEvent, TransportState> {
final StudentCircuitRepository studentCircuitRepository ;
TransportBloc({this.studentCircuitRepository}) ;
@override
TransportState get initialState => throw TransportLoading();
@override
Stream<TransportState> mapEventToState (
TransportEvent event,
) async* {
// TODO: implement mapEventToState
List<StudentCircuitModel> student ;
try{
if(event is LoadingStudentCircuit){
student = await studentCircuitRepository.fetchStudentCircuit(event.studentList);
}
if(student.length == 0){
yield TransportEmpty();
}else{
yield TransportLoaded(studentCircuit: student);
}
}catch (_) {
yield TransportError();
}
}
}
这是我尝试使用 TransportBloc 的页面
class TransportPageBloc extends StatefulWidget {
final List<StudentUser> stdUser;
TransportPageBloc(this.stdUser);
@override
_TransportBloxState createState() => _TransportBloxState();
}
class _TransportBloxState extends State<TransportPageBloc> {
@override
Widget build(BuildContext context) {
return BlocProvider<TransportBloc>(
create: (BuildContext context) => TransportBloc(),
child: TransportPage(widget.stdUser),
);
}
}
class TransportPage extends StatefulWidget {
final List<StudentUser> student;
TransportPage(this.student);
@override
_TransportPageState createState() => _TransportPageState();
}
class _TransportPageState extends State<TransportPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Liste des étudiants'),
),
body:
BlocBuilder<TransportBloc, TransportState>(bloc: TransportBloc(),builder: (context, state) {
if (state is TransportLoading) {
BlocProvider.of<TransportBloc>(context).add(LoadingStudentCircuit(studentList: widget.student));
return _initialWidget();
} else if (state is TransportLoaded) {
return _listStudentCircuit(state.studentCircuit);
} else if (state is TransportEmpty) {
return _emptyTransport();
} else if (state is TransportError) {
return _errorWidget();
}
return null;
}),
);
}
}
Widget _initialWidget() {
return Center(
child: CircularProgressIndicator(),
);
}
Widget _listStudentCircuit(List<StudentCircuitModel> studentCircuit) {
return ListView.separated(
itemBuilder: (context, index) {
return Container(
child: Text(studentCircuit[index].eleve.name),
);
},
separatorBuilder: (context, index) {
return Divider(
height: 5.0,
);
},
itemCount: studentCircuit.length);
}
Widget _emptyTransport(){
return Center(
child: Text('Verifier que vous avez des enfant'),
);
}
Widget _errorWidget(){
return Center(
child: Text('this is the error page'),
);
}
【问题讨论】:
-
可以分享代码吗?
-
我更新了我的问题
-
您正在抛出异常并且想知道为什么会出现异常?
标签: flutter dart flutter-bloc