ListView 加载图像但不会滚动

ListView loads images but wont scroll

以下容器在 Columnd 中。我刚刚添加了以下代码部分,因为我认为这是与此问题唯一相关的部分(我希望如此)。

添加 ListView 后,将加载并显示图像。但是,未启用滚动并且并非所有图像都可以呈现。不知道这个问题是和我使用ListView的方式有关,还是在GetX Obx上使用有关。

我的flutter版本是

[✓] Flutter(频道稳定,2.5.0,在 Ubuntu 20.04.3 LTS 5.11.0-34-generic,语言环境 en_US.UTF-8)

有什么想法吗?

Container(
                    height: 180,
                    child: Row(
                      children: [
                        Expanded(
                          child: Obx(() {
                            if (editProductController.imgDataList.value != []) {
                              final imgWidgets =
                                  editProductController.imgDataList.value
                                      .map(
                                        (imgData) => Container(
                                          width: 180,
                                          child: Image.memory(
                                            imgData,
                                            fit: BoxFit.cover,
                                          ),
                                        ),
                                      )
                                      .toList();
                              return Container(
                                width: 100,
                                child: ListView.builder(
                                  padding: EdgeInsets.all(8),
                                  itemCount: imgWidgets.length,
                                  scrollDirection: Axis.horizontal,
                                  //physics: AlwaysScrollableScrollPhysics(),
                                  itemBuilder: (context, index) =>
                                      imgWidgets[index],
                                ),
                              );
                            } else {
                              return Center(
                                child: Image.asset(
                                  'assets/images/image_placeholder.jpg',
                                ),
                              );
                            }
                          }),
                          flex: 2,
                        ),
                        Expanded(
                          child: Container(
                            height: 60,
                            child: CustomButton(
                                text: product != null
                                    ? "Modificar Imagenes"
                                    : "Agregar Imagen",
                                onTap: () async {
                                  try {
                                    List<XFile>? pickedFiles =
                                        await ImagePicker().pickMultiImage();
                                    if (pickedFiles != null) {
                                      final imgDataList = <Uint8List>[];

                                      for (final pickedFile in pickedFiles) {
                                        final imgData =
                                            await pickedFile.readAsBytes();
                                        imgDataList.add(imgData);
                                      }

                                      editProductController.imgDataList.value =
                                          imgDataList;
                                    } else {
                                      throw Exception(
                                          'No se pudo cargar las imagenes');
                                    }
                                  } catch (e) {
                                    Get.snackbar(
                                      'Error cargando las imagenes',
                                      e.toString(),
                                    );
                                  }
                                }),
                          ),
                        ),
                      ],
                    ),
                  )

Flutter 2.5 更新

请为您的水平滚动添加这些代码

// Set ScrollBehavior for an entire application.
MaterialApp(
  scrollBehavior: MyCustomScrollBehavior(),
  // ...
);
class MyCustomScrollBehavior extends MaterialScrollBehavior {
  // Override behavior methods and getters like dragDevices
  @override
  Set<PointerDeviceKind> get dragDevices => {
        PointerDeviceKind.touch,
        PointerDeviceKind.mouse,
      };
}

另一种方法

MaterialApp( scrollBehavior: MaterialScrollBehavior().copyWith( dragDevices: {PointerDeviceKind.mouse}, )

如需更多信息,请访问此 link