StatefulBuilder的问题,求解

2019-07-26  本文已影响0人  滴滴老人卡

求解同样的方式,为啥第一种不行,第二种可以。

//外部定义的。

StateSetter  ss;

//调用

Timer.periodic(Duration(milliseconds:300), (timer) {

if (ss !=null) {

i ++;

    btnText ="BBBBB"+i.toString();

    print("CCCCCC"+i.toString());

    ss(() {

});

  }

if (i >=20) {

timer.cancel();

    ss =null;

  }

});

//第一种方式

StatefulBuilder widget =DialogWidget().getDialog(

leftBtnText:btnText,

    stateCallback:ss

);

//第二种方式

var sb =StatefulBuilder(builder: (ctx, state) {

print("----------------------11111");

  print(state);

  print("----------------------2222");

  ss = state;

  return AlertDialog(

titlePadding:EdgeInsets.all(0.0),

    title:Container(

child:Text(btnText),

    ),

  );

});

showDialog(

context: context,

    barrierDismissible:false,

    builder: (context) {

return widget;

    });

//第一种方式的第三方类。

class DialogWidget{

WidgetgetDialog({

String title,

    String inputTitle,

    String errorText,

    String tipsText,

    String leftBtnText,

    String rightBtnText,

    VoidCallback leftCallback,

    VoidCallback rightCallback,

    StateSetter stateCallback,

    BuildContext context,

  }) {

var sb =StatefulBuilder(builder: (ctx, state) {

stateCallback = state;

      print("----------------------11111");

      print(state);

      print(stateCallback);

      print("----------------------2222");

      return AlertDialog(

titlePadding:EdgeInsets.all(0.0),

        title:Container(

child:Text(leftBtnText), //_getBody(),

        ),

      );

    });

    return sb;

  }

上一篇 下一篇

猜你喜欢

热点阅读