gpt4 book ai didi

dart - 如何只渲染一个 Widget setState

转载 作者:IT王子 更新时间:2023-10-29 06:46:09 25 4
gpt4 key购买 nike

我有两个简单的基础知识示例,一个是 Works,第二个需要一些解释。因此,当我在示例 1 中单击按钮时,它会工作并且 setStaet 呈现页面。

第二个示例 I 使用具有 setState of Button 的主体函数。当我单击按钮时,即使使用 setState 注释也没有任何反应,如果 它不呈现的括号内的变量。当我在类中创建 Variable 实例时,它工作正常,但我需要渲染 Only One Button 怎么办?

完整代码示例一

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!' : ''),
),
],
);
}
}

谢谢如天空。

最佳答案

我在理解您的问题时遇到了一些麻烦,但我也明白英语不是您的母语。您似乎在问,“我怎样才能只渲染一个按钮,例如 #2?”。如果这不是您的问题,请告诉我,以便我和其他人可以帮助您。

这只会呈现一个按钮,

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>[
RaisedButton(
onPressed: () {
setState(() {
istrue = !istrue;
});
},
child: Text('Click me'),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(istrue ? 'Boo!' : ''),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(istrue ? 'Boo!' : ''),
),
],
)),
);
}

}

关于dart - 如何只渲染一个 Widget setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51571420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com