निहित एनिमेशन
सुचारु, स्वचालित बदलावों के लिए `AnimatedContainer` और `AnimatedOpacity` जैसे विजेट का उपयोग करके निहित एनिमेशन लागू करें।
निहित एनिमेशन, CoddyKit पर Flutter मोबाइल विकास का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Flutter मोबाइल विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Flutter मोबाइल विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Implicit Widgets से आसान ऐनिमेशन
Flutter आपके ऐप में सहज ऐनिमेशन जोड़ने का एक आसान तरीका देता है: Implicit Animations। ये "सेट करें और भूल जाएँ" प्रकार के ऐनिमेशन हैं, जिनमें आप Flutter को केवल वांछित अंतिम स्थिति बताते हैं और वह संक्रमण स्वयं संभाल लेता है।
आपको ऐनिमेशन कंट्रोलर या श्रोताओं को प्रबंधित करने की आवश्यकता नहीं होती। बस किसी प्रॉपर्टी को बदलें और Flutter उसे आपके लिए ऐनिमेट कर देगा!
Implicit Animations के पीछे का जादू
जब आप किसी implicit animation विजेट का उपयोग करते हैं, तो उसकी ऐनिमेट की जाने वाली प्रॉपर्टी (जैसे आकार या रंग) के लिए एक नया मान देते हैं। इसके बाद Flutter निर्धारित duration के दौरान पुराने और नए मान के बीच अपने-आप मध्यवर्ती मान निकालता है।
यह Flutter से कहने जैसा है: "500 मिलीसेकंड में A से B तक जाएँ।" Flutter बीच के सभी चरण स्वयं निर्धारित कर लेता है।
Container से आकार और रंग ऐनिमेट करना
AnimatedContainer सबसे बहुमुखी implicit विजेट में से एक है। यह width, height, color, alignment और decoration जैसी प्रॉपर्टियों में होने वाले बदलावों को अपने-आप ऐनिमेट करता है।
आपको केवल नए मानों के साथ स्थिति अपडेट करनी होती है, बाकी काम AnimatedContainer कर देता है!
AnimatedContainer आज़माएँ
नीचे दिए गए कंटेनर पर टैप करें! ध्यान दें कि उसका आकार और रंग कितनी सहजता से बदलते हैं। हम केवल उसकी प्रॉपर्टियाँ बदलकर setState को कॉल कर रहे हैं, और AnimatedContainer ऐनिमेशन संभाल रहा है।
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'AnimatedContainer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const AnimatedContainerScreen(),
);
}
}
class AnimatedContainerScreen extends StatefulWidget {
const AnimatedContainerScreen({super.key});
@override
State<AnimatedContainerScreen> createState() => _AnimatedContainerScreenState();
}
class _AnimatedContainerScreenState extends State<AnimatedContainerScreen> {
double _width = 100.0;
double _height = 100.0;
Color _color = Colors.blue;
BorderRadiusGeometry _borderRadius = BorderRadius.circular(8.0);
void _updateContainer() {
setState(() {
_width = _width == 100.0 ? 200.0 : 100.0;
_height = _height == 100.0 ? 150.0 : 100.0;
_color = _color == Colors.blue ? Colors.red : Colors.blue;
_borderRadius = _borderRadius == BorderRadius.circular(8.0)
? BorderRadius.circular(50.0)
: BorderRadius.circular(8.0);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AnimatedContainer')),
body: Center(
child: GestureDetector(
onTap: _updateContainer,
child: AnimatedContainer(
width: _width,
height: _height,
decoration: BoxDecoration(
color: _color,
borderRadius: _borderRadius,
),
alignment: Alignment.center,
duration: const Duration(seconds: 1),
curve: Curves.fastOutSlowIn,
child: const Text(
'Tap me!',
style: TextStyle(color: Colors.white),
),
),
),
),
);
}
}AnimatedOpacity से विजेट को धीरे-धीरे दिखाना
AnimatedOpacity विजेट आपके UI के कुछ हिस्सों को सहजता से दिखाने या छिपाने के लिए बिल्कुल उपयुक्त है। यह अपनी opacity प्रॉपर्टी में होने वाले बदलावों को ऐनिमेट करता है।
0.0 की अपारदर्शिता का अर्थ पूरी तरह पारदर्शी (अदृश्य) है, जबकि 1.0 का अर्थ पूरी तरह अपारदर्शी (दृश्य) है।
AnimatedOpacity को क्रियान्वित होते देखें
टेक्स्ट को सहज संक्रमण के साथ धीरे-धीरे दिखाई देते और गायब होते देखें। हम केवल एक बूलियन स्थिति को बदल रहे हैं और उसके आधार पर अपारदर्शिता का मान अपडेट कर रहे हैं।
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'AnimatedOpacity Demo',
theme: ThemeData(
primarySwatch: Colors.green,
),
home: const AnimatedOpacityScreen(),
);
}
}
class AnimatedOpacityScreen extends StatefulWidget {
const AnimatedOpacityScreen({super.key});
@override
State<AnimatedOpacityScreen> createState() => _AnimatedOpacityScreenState();
}
class _AnimatedOpacityScreenState extends State<AnimatedOpacityScreen> {
bool _isVisible = true;
void _toggleVisibility() {
setState(() {
_isVisible = !_isVisible;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AnimatedOpacity')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AnimatedOpacity(
opacity: _isVisible ? 1.0 : 0.0,
duration: const Duration(milliseconds: 500),
curve: Curves.easeInOut,
child: const Text(
'Hello Flutter!',
style: TextStyle(fontSize: 24),
),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: _toggleVisibility,
child: Text(_isVisible ? 'Hide Text' : 'Show Text'),
),
],
),
),
);
}
}विजेट के बीच सहज क्रॉस-फ़ेड
जब आपको दो अलग-अलग विजेट के बीच सहज रूप से धुंधला होने वाला प्रभाव चाहिए, तो AnimatedCrossFade आपके लिए सही विकल्प है। यह अलग-अलग स्थितियाँ दिखाने के लिए उपयोगी है, जैसे लोडिंग स्पिनर का सामग्री में बदलना।
आप firstChild और secondChild देते हैं और crossFadeState का उपयोग करके नियंत्रित करते हैं कि इनमें से कौन-सा दिखाई दे।
AnimatedCrossFade आज़माएँ
दो अलग-अलग टेक्स्ट विजेट के बीच बदलने के लिए बटन पर टैप करें। ध्यान दें कि एक विजेट कैसे धीरे-धीरे गायब होता है और दूसरा कैसे दिखाई देता है, जिससे सहज संक्रमण बनता है।
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'AnimatedCrossFade Demo',
theme: ThemeData(
primarySwatch: Colors.purple,
),
home: const AnimatedCrossFadeScreen(),
);
}
}
class AnimatedCrossFadeScreen extends StatefulWidget {
const AnimatedCrossFadeScreen({super.key});
@override
State<AnimatedCrossFadeScreen> createState() => _AnimatedCrossFadeScreenState();
}
class _AnimatedCrossFadeScreenState extends State<AnimatedCrossFadeScreen> {
bool _showFirst = true;
void _toggleChild() {
setState(() {
_showFirst = !_showFirst;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('AnimatedCrossFade')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AnimatedCrossFade(
duration: const Duration(milliseconds: 700),
crossFadeState: _showFirst
? CrossFadeState.showFirst
: CrossFadeState.showSecond,
firstChild: Container(
width: 200,
height: 100,
color: Colors.blueAccent,
alignment: Alignment.center,
child: const Text(
'First Widget',
style: TextStyle(color: Colors.white, fontSize: 18),
),
),
secondChild: Container(
width: 200,
height: 100,
color: Colors.deepOrange,
alignment: Alignment.center,
child: const Text(
'Second Widget',
style: TextStyle(color: Colors.white, fontSize: 18),
),
),
),
const SizedBox(height: 30),
ElevatedButton(
onPressed: _toggleChild,
child: const Text('Toggle Widget'),
),
],
),
),
);
}
}ऐनिमेशन को बेहतर बनाना: Duration और Curve
सभी implicit animations के लिए दो महत्वपूर्ण प्रॉपर्टियाँ duration और curve हैं:
duration: यह निर्धारित करता है कि ऐनिमेशन पूरा होने में कितना समय लगेगा।Duration(milliseconds: ...)याDuration(seconds: ...)का उपयोग करें।curve: यह ऐनिमेशन की अवधि के दौरान उसकी गति को नियंत्रित करता है।Curves.linearएकसमान गति देता है,Curves.easeOutतेज़ी से शुरू होकर धीमा होता है, औरCurves.bounceInउछाल वाला प्रभाव जोड़ता है।
सही अनुभव पाने के लिए अलग-अलग curves के साथ प्रयोग करें!
Implicit Animation जाँच
आप ऐसा बटन बनाना चाहते हैं जिसे टैप करने पर कोई टेक्स्ट विजेट सहजता से गायब हो जाए। इस कार्य के लिए कौन-सा implicit animation विजेट सबसे उपयुक्त है?
Implicit Animations का पुनरावलोकन
बहुत अच्छा! आपने Flutter में Implicit Animations की शक्ति के बारे में सीखा है। इनके द्वारा केवल विजेट की प्रॉपर्टियाँ बदलकर सहज, स्वचालित संक्रमण जोड़े जा सकते हैं।
- हमने आकार, रंग और आकृति को ऐनिमेट करने के लिए
AnimatedContainerका उपयोग देखा। - तत्वों को धीरे-धीरे दिखाने और छिपाने के लिए
AnimatedOpacity। - दो विजेट के बीच सहज मिश्रण के साथ बदलने के लिए
AnimatedCrossFade। - अपने ऐनिमेशन के लिए
durationनिर्धारित करना और उपयुक्तcurveचुनना याद रखें!
अब हम अधिक जटिल और कस्टम नियंत्रण के लिए Explicit Animations पर विस्तार से चर्चा करेंगे।
एआई शिक्षक के साथ Dart सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 22
- पाठ
- 88
अक्सर पूछे जाने वाले प्रश्न
क्या “निहित एनिमेशन” पाठ निःशुल्क है?
हाँ — Flutter मोबाइल विकास अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “निहित एनिमेशन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Flutter मोबाइल विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“निहित एनिमेशन” में मैं क्या सीखूँगा?
सुचारु, स्वचालित बदलावों के लिए `AnimatedContainer` और `AnimatedOpacity` जैसे विजेट का उपयोग करके निहित एनिमेशन लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Flutter मोबाइल विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Flutter मोबाइल विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Flutter मोबाइल विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“निहित एनिमेशन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Flutter मोबाइल विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Flutter मोबाइल विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।