// 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), ], ), ], ), ), ); } }