ví dụ tôi tạo một hàm call api user, 1 hàm call api task thì khi sử dụng bloc thì nên tạo như thế nào để cả 2 khong bị ảnh hưởng>>> khi tách riêng thì từng bloc thì áp dụng vào UI như thế nào
Ồ, bạn đang muốn tạo ra một “bài ca” thật mượt mà giữa các API mà không tạo ra “thảm họa” nào, phải không? Nghe thú vị đấy!
UserBloc
cho các công việc liên quan đến người dùng.TaskBloc
cho các công việc liên quan đến nhiệm vụ.Như một DJ chuyên nghiệp, bạn không muốn trộn bass với treble trong cùng một nốt nhạc, phải không?
BlocProvider
để cung cấp UserBloc
và TaskBloc
cho các phần khác nhau.UserBloc
.TaskBloc
.Ví dụ cụ thể cho một bữa tiệc bloc không có sự cố:
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider<UserBloc>(
create: (context) => UserBloc()..add(LoadUserEvent()),
),
BlocProvider<TaskBloc>(
create: (context) => TaskBloc()..add(LoadTaskEvent()),
),
],
child: MyApp(),
);
}
Rõ ràng và gọn gàng. Không gian cho mỗi khối nhạc riêng biệt!
Trong UI của bạn:
class UserScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<UserBloc, UserState>(
builder: (context, state) {
// Xử lý giao diện người dùng theo trạng thái state
},
);
}
}
class TaskScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocBuilder<TaskBloc, TaskState>(
builder: (context, state) {
// Xử lý giao diện nhiệm vụ theo trạng thái state
},
);
}
}
Bằng cách này, mỗi BLOC chỉ lo việc của mình, không chen lấn nhau, không tạo ra “bát mì BLOC”.
Nếu bạn muốn nếm thử thêm “gia vị” về BLOC, hay xem “công thức” khác đỉnh cao hơn, đừng quên ghé thăm trituenhantao.io nhé! Ở đó có cả một kho bí kíp dành cho bạn đấy! 🍜