按下按钮时颤振更改文本

时间:2019-12-14 11:08:18

标签: flutter dart

伙计们,我将在点击...时尝试在按钮上更改文本。

我的代码:

         bool pressGeoON = false;
         bool cmbscritta = false;
           RaisedButton(
                  shape: new RoundedRectangleBorder(
                      borderRadius: new BorderRadius.circular(18.0),
                      side: BorderSide(color: Colors.red)),
                  color: pressGeoON ? Colors.blue: Colors.red,
                  textColor: Colors.white,
                  child:  cmbscritta ? Text("GeoOn"): Text("GeoOFF"),
                  //    style: TextStyle(fontSize: 14)

                  onPressed: () {
                    setState(() => pressGeoON = !pressGeoON);
                    setState(() => cmbscritta = !cmbscritta);
                  },
                )

没有Dart Analisys的建议,但没有用...帮助!

3 个答案:

答案 0 :(得分:3)

您的班级必须对更改活动状态具有状态

该变量也必须全局声明

class MyClass extends StatefulWidget {
  @override
  _MyClassState createState() => _MyClassState();
}

class _MyClassState extends State<MyClass> {
  bool pressGeoON = false;
  bool cmbscritta = false;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          shape: new RoundedRectangleBorder(
              borderRadius: new BorderRadius.circular(18.0),
              side: BorderSide(color: Colors.red)),
          color: pressGeoON ? Colors.blue : Colors.red,
          textColor: Colors.white,
          child: cmbscritta ? Text("GeoOn") : Text("GeoOFF"),
          //    style: TextStyle(fontSize: 14)
            onPressed: () {
              setState(() {
                pressGeoON = !pressGeoON;
                cmbscritta = !cmbscritta;
              });
            }
        ),
      ),
    );
  }
}

答案 1 :(得分:2)

为此,bool pressGeoON = false; bool cmbscritta = false;应该是小部件的全局变量,它将开始起作用。

答案 2 :(得分:1)

您应将onPressed简化为:

onPressed: () {
   setState(() {
     pressGeoON = !pressGeoON;
     cmbscritta = !cmbscritta;
  });
}

并确保您的窗口小部件类是StatefulWidget而不是StatelessWidget