【发布时间】:2019-01-05 08:57:30
【问题描述】:
我有两个简单的基础示例,一个是 Works,第二个需要一些解释。 因此,当我在示例一中单击按钮时,它可以工作并 setStaet 呈现页面。
第二个例子我使用了一个具有 setState 按钮的 body 函数。当我单击按钮时,即使使用 setState 注释也没有任何反应,如果 括号内的变量它不呈现。 当我在类中创建变量实例时,它工作正常,但我只需要渲染一个按钮如何?
完整代码示例一
import 'package:flutter/material.dart';
main() => runApp(MaterialApp(
home: Home(),
));
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
bool istrue = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Works fine'),),
body: Center(child: body()),
);
}
Widget body() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: () {
setState(() {
istrue = !istrue;
});
},
child: Text('Click me'),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(istrue ? 'Boo!' : ''),
),
],
);
}
}
完整代码示例二
import 'package:flutter/material.dart';
main() => runApp(MaterialApp(
home: Home(),
));
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
bool istrue = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Works fine'),),
body: Center(child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
body(),body(),
],
)),
);
}
Widget body() {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: () {
setState(() {
istrue = !istrue;
});
},
child: Text('Click me'),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(istrue ? 'Boo!' : ''),
),
],
);
}
}
感谢天空。
【问题讨论】:
-
你的两个例子都对我有用!
-
这两个例子都很好,但我只需要渲染一个按钮。
标签: dart flutter flutter-layout flutter-test