это результат моего кода.
У меня есть четыре изображения для использования в PageView
виджете, и, поскольку размер некоторых изображений отличается от другого изображения, я хочу соответствовать размеру картинок через боксфит. Но чтобы сделать boxfit, высота изображения такая большая.
Поэтому я ограничил Container
свойством height, но независимо от того, как я установил высоту контейнера в виджете makePage, (например, 100, height / 8 ...) высота контейнера фиксирована (зеленый контейнер)
Это из-за viewportFraction? Кто-нибудь знает, что вызывает это?
Виджет _makePage возвращает каждую страницу (изображение) для PageView
import 'package:flutter/material.dart';
import 'package:dots_indicator/dots_indicator.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: Scaffold(body: DotIndicator()),
);
}
}
class DotIndicator extends StatefulWidget {
@override
_DotIndicatorState createState() => _DotIndicatorState();
}
class _DotIndicatorState extends State<DotIndicator> {
final List<String> imgEx = [
'images/1.jpg',
'images/2.jpg',
'images/3.jpg',
'images/4.jpg',
];
//pageView controller
final _controller = PageController(viewportFraction: 0.8);
double currentPage = 0.0;
@override
Widget build(BuildContext context) {
return _showMenuPage(context);
}
Widget _showMenuPage(BuildContext context) {
final _itemCount = imgEx.length;
return Container(
height: MediaQuery.of(context).size.height / 2,
color: Colors.grey[300],
child: Stack(
children: [
PageView.builder(
controller: _controller,
itemCount: _itemCount,
itemBuilder: (context, itemIndex) {
return _makePage(context, itemIndex);
},
)
],
),
);
}
Widget _makePage(BuildContext context, int itemIndex) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 4.0),
child: Container(
height: MediaQuery.of(context).size.height /4,
width: MediaQuery.of(context).size.width * 0.8,
color: Colors.green,
child: Image.asset(imgEx[itemIndex], ),
),
);
}
}