اذهب إلى المحتوى

السؤال

Recommended Posts

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

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...