# Software Studio Lab 4
```=
// import 'dart:js';
import 'dart:ffi';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
class ExpandedPage extends StatefulWidget {
ExpandedPage({super.key});
@override
State<ExpandedPage> createState() => _ExpandedPageState();
}
class _ExpandedPageState extends State<ExpandedPage> with TickerProviderStateMixin {
late PageController _pageViewController;
int _currentPageIndex = 0;
double icon1Mov = 0;
double icon2Mov = 0;
double text1Mov = 0;
double text2Mov = 0;
double button1Mov = 0;
double button2Mov = 0;
@override
void initState() {
super.initState();
_pageViewController = PageController();
_pageViewController.addListener(() {
var offset = _pageViewController.offset;
var pageBox = context.findRenderObject() as RenderBox;
var width = pageBox.size.width;
setState(() {
icon1Mov = 0 - offset;
text1Mov = 0 - 1.5 * offset;
button1Mov = 0 - 2.5 * offset;
icon2Mov = width - offset;
text2Mov = 1.5 * width - 1.5 * offset;
button2Mov = 2.5 * width - 2.5 * offset;
});
});
}
@override
void dispose() {
super.dispose();
_pageViewController.dispose();
}
...
@override
Widget build(BuildContext context) {
final isDarkMode =
MediaQuery.of(context).platformBrightness == Brightness.dark;
...
Transform.translate(
offset: Offset(icon1Mov, 0),
...
),
const SizedBox(height: 40,),
Transform.translate(
offset: Offset(text1Mov, 0),
...
),
const SizedBox(height: 40,),
Transform.translate(
offset: Offset(button1Mov, 0),
...
),
...
Transform.translate(
offset: Offset(icon2Mov, 0),
...
),
const SizedBox(height: 40,),
Transform.translate(
offset: Offset(text2Mov, 0),
...
),
const SizedBox(height: 40,),
Transform.translate(
offset: Offset(button2Mov, 0),
...
),
...
```