• 0

ارغب برفض الضغط على الزر اكثر من مرة في Flutter

ارغب برفض الزر الضغط عليه اكثر من مرة في Flutter  لضمان عدم تنفيز الأمر أكثر من مرة .

تمّ تعديل بواسطة Wael Aljamal
توضيح السؤال
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك ان تقوم بعمل حالة مثل isButtonDisabled و عند الضغط عليه لأول مره عمل هذه الحالة false و عمل تحقق من هذه الحالة فإن كانت true سيقوم بالضغط عليه و إن كانت false لن يكون هناك اي onPress مما يعني انو الكبسة ستكون غير فعالة لعدم وجود دالة تقوم بعمل يشئ لهذه الكبسة كالتالي :

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  // هنا تقوم بتعريف الحالة  
  bool _isButtonDisabled= True;

 //هنا بتعريق الدالة التي ستفوم بعمل الزيادة 

  void _incrementCounter() {
    setState(() {
      _isButtonDisabled = true;
      _counter++;
    });
  }
  
  .........................
  
  Widget _buildCounterButton() {
  // هنا نقوم بتفقد الحالة 
  //  ان كانت True سنقوم بارجاع الدالة  Increment  لل  onPeress
  //  ان كانت  False سنفوم بارجاع  null
  // اعطاء فيمة نل للحدث يعني ان هذه الكبسة غير قابلة للكبس
    return new RaisedButton(
      child: new Text(
        _isButtonDisabled ? "Hold on..." : "Increment"
      ),
      onPressed:  _isButtonDisabled ? _incrementCounter():null,
    );
  }

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكننا تغيير حالة الزر ل disabled أي نقوم بإلغاء تفعيله كالتالي:

تعويض قيمة null للدالة onPressed

onPressed : null
RaisedButton(
  child: Text("PRESS BUTTON"),
  onPressed: booleanCondition
    ? () => myTapCallback()
    : null
)


// booleanCondition  متغير

أو باستخدام متغير،  في دالة onPressed نغيير حالة الزر:

class _MyHomePageState extends State<MyHomePage> {
  bool _isButtonDisabled;

  @override
  void initState() {
    _isButtonDisabled = false;
  }

  void _incrementCounter() {
    setState(() {
      _isButtonDisabled = true;
      _counter++;
    });
  }

وفي شيفرة الزر نحدد الدالة التي ستنفذ بناءاً على حالة المتغير:

Widget _buildCounterButton() {
    return new RaisedButton(
      child: new Text(
        _isButtonDisabled ? "Hold on..." : "Increment"
      ),
      onPressed: _isButtonDisabled ? null : _incrementCounter,
    );
  }

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن