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
以下容器在 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