PageView
轮动图以及抖音上下滑页切换视频功能等等,这些都可以通过 PageView 轻松实现
PageView常见属性:
| 属性 | 类型 | 含义 |
|---|---|---|
scrollDirection | Axis.horizonta水平方向 Axis.vertical锤子方向 | |
children | 配置子元素 | |
allowImplicitScrolling | 缓存当前页面的前后两页 | |
onPageChanged | page改变的时候触发 |
PageView 的使用
import 'package:flutter/material.dart';
class PageViewPage extends StatefulWidget {
const PageViewPage({super.key});
@override
State<PageViewPage> createState() => _PageViewPageState();
}
class _PageViewPageState extends State<PageViewPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("pageview演示"),
),
body: PageView(
// scrollDirection: Axis.vertical, // 滑动方向为垂直方向
children: [
Center(
child: Text("1",
style: Theme.of(context).textTheme.headline1,
),
),
Center(
child: Text("2",
style: Theme.of(context).textTheme.headline1,
),
),
],
)
);
}
}
PageView.builder
import 'package:flutter/material.dart';
class PageViewPage extends StatefulWidget {
const PageViewPage({super.key});
@override
State<PageViewPage> createState() => _PageViewPageState();
}
class _PageViewPageState extends State<PageViewPage> {
int itemCount=10;
@override
void initState() {
// TODO: implement initState
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("pageview演示"),
), // AppBar
body: PageView.builder(
scrollDirection: Axis.vertical, // 滑动方向为垂直方向
itemBuilder: (BuildContext context, int index) {
return MyPage(text:"$index");
},
itemCount: 10,
)
); // Scaffold
}
}
class MyPage extends StatefulWidget {
final String text;
const MyPage({super.key,required this.text});
@override
State<MyPage> createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
@override
Widget build(BuildContext context) {
return Center(
child: Text(
widget.text,
style: Theme.of(context).textTheme.headline1
), // Text
); // Center
}
}