Skip to main content

PageView

轮动图以及抖音上下滑页切换视频功能等等,这些都可以通过 PageView 轻松实现

PageView常见属性:

属性类型含义
scrollDirectionAxis.horizonta水平方向 Axis.vertical锤子方向
children配置子元素
allowImplicitScrolling缓存当前页面的前后两页
onPageChangedpage改变的时候触发

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
}
}