আমি মনে করি আপনি build
আপনার বোতামে কিছু সহায়ক ফাংশন পাশাপাশি কিছু সম্পত্তি বন্ধ করার জন্য একটি স্টেটফুল উইজেট প্রবর্তন করতে চাইতে পারেন ।
- স্টেটফুল উইজেট / স্টেট ব্যবহার করুন এবং আপনার অবস্থা ধরে রাখতে একটি পরিবর্তনশীল তৈরি করুন (উদাঃ
isButtonDisabled
)
- প্রথমদিকে এটি সত্যে সেট করুন (যদি এটি আপনি চান)
- বোতামটি রেন্ডার করার সময়, কোনওটি বা কোনও ফাংশনে সরাসরি
onPressed
মান সেট করবেন নাnull
onPressed: () {}
- পরিবর্তে , শর্তসাপেক্ষে এটি কোনও ত্রৈমাসিক বা কোনও সহায়ক ফাংশন ব্যবহার করে সেট করুন (নীচে উদাহরণস্বরূপ)
isButtonDisabled
এই শর্তাধীন অংশ হিসাবে পরীক্ষা করুন এবং হয় null
বা কিছু ফাংশন ফিরে ।
- যখন বোতাম টিপানো হয় (বা আপনি যখনই বোতামটি অক্ষম করতে চান)
setState(() => isButtonDisabled = true)
শর্তসাপেক্ষ ভেরিয়েবলটি ফ্লিপ করতে ব্যবহার করুন ।
- ঝাঁকুনি
build()
আবার নতুন রাষ্ট্রের সাথে পদ্ধতিটি কল করবে এবং বোতামটি একটি null
প্রেস হ্যান্ডলারের সাথে রেন্ডার হবে এবং অক্ষম হয়ে যাবে।
ফ্লটার কাউন্টার প্রকল্পটি ব্যবহার করে এখানে আরও কিছু প্রসঙ্গ দেওয়া আছে।
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
bool _isButtonDisabled;
@override
void initState() {
_isButtonDisabled = false;
}
void _incrementCounter() {
setState(() {
_isButtonDisabled = true;
_counter++;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("The App"),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'You have pushed the button this many times:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
_buildCounterButton(),
],
),
),
);
}
Widget _buildCounterButton() {
return new RaisedButton(
child: new Text(
_isButtonDisabled ? "Hold on..." : "Increment"
),
onPressed: _isButtonDisabled ? null : _incrementCounter,
);
}
}
এই উদাহরণে আমি শর্তসাপেক্ষে Text
এবং onPressed
এটি সেট করতে একটি ইনলাইন ত্রিভুজ ব্যবহার করছি , তবে এটি কোনও ফাংশনে আনতে আপনার পক্ষে আরও উপযুক্ত হতে পারে (আপনি বোতামের পাঠ্যও পরিবর্তন করতে একই পদ্ধতি ব্যবহার করতে পারেন):
Widget _buildCounterButton() {
return new RaisedButton(
child: new Text(
_isButtonDisabled ? "Hold on..." : "Increment"
),
onPressed: _counterButtonPress(),
);
}
Function _counterButtonPress() {
if (_isButtonDisabled) {
return null;
} else {
return () {
// do anything else you may want to here
_incrementCounter();
};
}
}