يعد ScaleTransition أحد عناصر الرسوم المتحركة في Flutter والذي يسمح للمطورين بتحريك وتغيير حجم عناصر واجهة المستخدم بشكل دائم أو مؤقت. يتم استخدام هذا العنصر الرسومي عادةً لتحريك الصور والأيقونات وحتى نصوص الواجهة وتأكيد العمليات الهامة وجذب انتباه المستخدمين.
خصائص ScaleTransition
هناك عدة خصائص يمكن تعيينها في ScaleTransition لضبط الطريقة التي يتم بها تغيير حجم العنصر. وفيما يلي شرح لكل خاصية بالتفصيل:
“اقرأ أيضاً: شرح استخدام ويدجت Tooltip في فلاتر“
alignment
تحدد نقطة التوازن للعنصر المتغير الحجم. يمكن استخدام أحد القيم التالية:
Alignment.topLeftAlignment.topCenterAlignment.topRightAlignment.centerLeftAlignment.centerAlignment.centerRightAlignment.bottomLeftAlignment.bottomCenterAlignment.bottomRight
ScaleTransition(
alignment: Alignment.center,
scale: _animation,
child: Container(
width: 200,
height: 200,
color: Colors.blue,
),
)
scale
تحدد مقدار تغيير حجم العنصر. يمكن استخدام أي قيمة رقمية لهذه الخاصية.
AnimationController _controller = AnimationController(
vsync: this,
duration: Duration(seconds: 2),
);
Animation<double> _animation = Tween<double>(
begin: 1,
end: 2,
).animate(_controller);
ScaleTransition(
scale: _animation,
child: Container(
width: 200,
height: 200,
color: Colors.blue,
),
)
“اقرأ أيضاً: شرح استخدام ويدجت SafeArea في فلاتر“
child
يحدد العنصر الذي يتم تغيير حجمه.
ScaleTransition(
scale: _animation,
child: Container(
width: 200,
height: 200,
color: Colors.blue,
),
)
مثال على استخدام ScaleTransition في فلاتر
هذا مثال بسيط يستخدم ScaleTransition لتحريك وتغيير حجم عنصر واحد في التطبيق.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ScaleTransition Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyScaleTransition(),
);
}
}
class MyScaleTransition extends StatefulWidget {
const MyScaleTransition({Key? key}) : super(key: key);
@override
_MyScaleTransitionState createState() => _MyScaleTransitionState();
}
class _MyScaleTransitionState extends State<MyScaleTransition>
with SingleTickerProviderStateMixin {
late AnimationController _controller;
late Animation<double> _animation;
@override
void initState() {
super.initState();
_controller = AnimationController(
vsync: this,
duration: const Duration(seconds: 2),
);
_animation = Tween<double>(
begin: 1,
end: 2,
).animate(_controller);
_controller.repeat();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Scale Transition Demo',
home: Scaffold(
appBar: AppBar(
title: const Text('Scale Transition Demo'),
),
body: Center(
child: ScaleTransition(
scale: _animation,
child: Container(
width: 200,
height: 200,
color: Colors.blue,
child: const Center(
child: Text(
'Scale',
style: TextStyle(
color: Colors.white,
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
),
),
),
),
),
);
}
}
في هذا المثال، تم إنشاء ScaleTransition الذي يتحرك ويتغير حجمه مع AnimationController. تم استخدام Tween<double> لتحديد مدى التغيير في حجم العنصر، وتم تمرير AnimationController إلى Tween لتحديد مدة التحرك. في build ، تم إنشاء ScaleTransition وتمرير Animation إلى scale ، وتم تمرير عنصر Container إلى child. تم تضمين Text وسط العنصر لإظهار التغييرات في التغيير في حجم العنصر.
“اقرأ أيضاً: شرح استخدام ويدجت TextField في فلاتر“
ScaleTransition هو عنصر رسومي يساعد المطورين على تحريك وتغيير حجم العناصر في واجهة المستخدم بشكل سهل وفعال. يمكن تخصيص العديد من الخصائص لتعديل طريقة تغيير حجم العنصر وتحسين تجربة المستخدم.




