这是情况——
我的 Flutter 应用仪表板屏幕有两个单独的列表
我有一个名为dashboard_bloc 和dashboard_event 的块,有两个单独的事件来分别获取pageView 数据和列表项数据以及dashboard_state。
这就是我开始的方式。
void initState() {
// TODO: implement initState
super.initState();
_dashboardBloc = DashboardBloc(repository: ProductRepositoryImpl());
_dashboardBloc.add(FetchHomeProductsEvent(token: token, productId: "1"));
_dashboardBloc.add(FetchProductsEvent(token: token));
}
Widget build(BuildContext context) {
return Scaffold(
body: BlocProvider(
create: (context) => _dashboardBloc,
child: SingleChildScrollView(
child: Column(
children: <Widget>[
Container(
child: BlocBuilder<DashboardBloc, DashboardState>(
bloc: _dashboardBloc,
builder: (context, state) {
if (state is DashboardLoadingState) {
return buildLoading();
} else if (state is DashboardErrorState) {
return buildErrorUi(state.message);
} else if (state is DashboardLoadedState) …Run Code Online (Sandbox Code Playgroud) 我有一个带有三个小部件 [widgetA、widgetB、widgetC] 的屏幕,我有一个 bloc[BlocA] 负责数据获取并在该屏幕上显示我有三个事件 [eventA、eventB、eventC] 渲染小部件 [ widgetA、widgetB、widgetC] 和我有三个状态 [stateA、stateB、stateC],它们负责管理小部件的状态 [widgetA、widgetB、widgetC] 我已附加所有代码来重现和测试该案例。
我一次只能显示一种状态及其各自的小部件,而我想根据它们的事件显示所有三种状态及其小部件。任何帮助将不胜感激。
我尝试实现相同目标的唯一方法是为每个小部件创建单独的块和事件类,但不知何故我对这种方法不满意。
实现这个用例的最佳方法是什么?
测试屏幕
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:locus/blocs/test/testbloc.dart';
class TestScreen extends StatelessWidget {
const TestScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => TestBloc()..add(const TestEvent1()),
child: Scaffold(
appBar: AppBar(
title: const Text('Test'),
),
body: Stack(
children: [
Builder(builder: (context) {
return Padding(
padding: const EdgeInsets.only(top: 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () =>
context.read<TestBloc>().add(const TestEvent1()),
child: const Text("Event1")), …Run Code Online (Sandbox Code Playgroud) 免责声明:- flutter 社区的新成员
在本机 Android 代码中,我使用手势检测器完成了类似的工作,但我想知道如何在颤振中实现相同的效果。就像我在水平列表中有卡片列表一样,当用户滚动列表时,一次只能滚动一项。任何实现这一目标的想法或建议将不胜感激。