| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| |
| /// Flutter code sample for [AnimatedSlide]. |
| |
| void main() => runApp(const AnimatedSlideApp()); |
| |
| class AnimatedSlideApp extends StatelessWidget { |
| const AnimatedSlideApp({super.key}); |
| |
| @override |
| Widget build(BuildContext context) { |
| return MaterialApp( |
| theme: ThemeData(useMaterial3: true), |
| home: const AnimatedSlideExample(), |
| ); |
| } |
| } |
| |
| class AnimatedSlideExample extends StatefulWidget { |
| const AnimatedSlideExample({super.key}); |
| |
| @override |
| State<AnimatedSlideExample> createState() => _AnimatedSlideExampleState(); |
| } |
| |
| class _AnimatedSlideExampleState extends State<AnimatedSlideExample> { |
| Offset offset = Offset.zero; |
| |
| @override |
| Widget build(BuildContext context) { |
| final TextTheme textTheme = Theme.of(context).textTheme; |
| |
| return Scaffold( |
| appBar: AppBar(title: const Text('AnimatedSlide Sample')), |
| body: Padding( |
| padding: const EdgeInsets.all(16.0), |
| child: Column( |
| mainAxisSize: MainAxisSize.min, |
| children: <Widget>[ |
| Expanded( |
| child: Row( |
| children: <Widget>[ |
| Expanded( |
| child: Container( |
| alignment: Alignment.center, |
| padding: const EdgeInsets.all(50.0), |
| child: AnimatedSlide( |
| offset: offset, |
| duration: const Duration(milliseconds: 500), |
| curve: Curves.easeInOut, |
| child: const FlutterLogo(size: 50.0), |
| ), |
| ), |
| ), |
| Column( |
| children: <Widget>[ |
| Text('Y', style: textTheme.bodyMedium), |
| Expanded( |
| child: RotatedBox( |
| quarterTurns: 1, |
| child: Slider( |
| min: -5.0, |
| max: 5.0, |
| value: offset.dy, |
| onChanged: (double value) { |
| setState(() { |
| offset = Offset(offset.dx, value); |
| }); |
| }, |
| ), |
| ), |
| ), |
| ], |
| ), |
| ], |
| ), |
| ), |
| Row( |
| mainAxisAlignment: MainAxisAlignment.spaceEvenly, |
| children: <Widget>[ |
| Text('X', style: textTheme.bodyMedium), |
| Expanded( |
| child: Slider( |
| min: -5.0, |
| max: 5.0, |
| value: offset.dx, |
| onChanged: (double value) { |
| setState(() { |
| offset = Offset(value, offset.dy); |
| }); |
| }, |
| ), |
| ), |
| const SizedBox(width: 48.0), |
| ], |
| ), |
| ], |
| ), |
| ), |
| ); |
| } |
| } |