Flutter 更新主体的颤振按钮
您好,我如何才能使2个按钮,将更新像标签正文内容。当您单击第1个按钮时,它将显示为选中,内容将更改(appBar标题、正文、滑块等)。当您单击另一个按钮时,它将显示为选中,并将再次更改内容。但按钮将出现在两个内容中。就像下面这个例子一样 有一些看起来像选项卡,但区别在于它们正在更改状态并更新页面Flutter 更新主体的颤振按钮,flutter,button,setstate,Flutter,Button,Setstate,您好,我如何才能使2个按钮,将更新像标签正文内容。当您单击第1个按钮时,它将显示为选中,内容将更改(appBar标题、正文、滑块等)。当您单击另一个按钮时,它将显示为选中,并将再次更改内容。但按钮将出现在两个内容中。就像下面这个例子一样 有一些看起来像选项卡,但区别在于它们正在更改状态并更新页面 最简单的方法是创建一个全局变量,该变量保存所选按钮的值 将其从main()方法中取出 您可以从项目中的每个类和文件访问它 其他方式需要提供程序和状态管理体系结构 工作样本: import 'packag
最简单的方法是创建一个全局变量,该变量保存所选按钮的值 将其从main()方法中取出 您可以从项目中的每个类和文件访问它 其他方式需要提供程序和状态管理体系结构 工作样本:
import 'package:flutter/material.dart';
int selectedButton = 0;
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Page1(),
);
}
}
class Page1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Column(children: <Widget>[
Text('Page1'),
MyWidget(selectedButton),
])));
}
}
class Page2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Column(children: <Widget>[
Text('Page2'),
MyWidget(selectedButton),
])));
}
}
class MyWidget extends StatelessWidget {
final int selected;
MyWidget(this.selected);
@override
Widget build(BuildContext context) {
return Row(children: <Widget>[
RawMaterialButton(
child: Text("Go to page1"),
fillColor: selected == 0 ? Colors.red : Colors.grey,
onPressed: () {
selectedButton = 0;
Navigator.push(
context, MaterialPageRoute(builder: (context) => Page1()));
}),
RawMaterialButton(
child: Text("Go to page2"),
fillColor: selected == 1 ? Colors.red : Colors.grey,
onPressed: () {
selectedButton = 1;
Navigator.push(
context, MaterialPageRoute(builder: (context) => Page2()));
})
]);
}
}
导入“包装:颤振/材料.省道”;
int selectedButton=0;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
主页:第1页(),
);
}
}
类Page1扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:脚手架(
正文:列(子项:[
文本(“第1页”),
MyWidget(selectedButton),
])));
}
}
类Page2扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
家:脚手架(
正文:列(子项:[
文本(“第2页”),
MyWidget(selectedButton),
])));
}
}
类MyWidget扩展了无状态Widget{
最终选定int;
MyWidget(this.selected);
@凌驾
小部件构建(构建上下文){
返回行(子项:[
原材料按钮(
子项:文本(“转到第1页”),
fillColor:selected==0?颜色。红色:颜色。灰色,
已按下:(){
selectedButton=0;
导航器。推(
context,MaterialPageRoute(builder:(context)=>Page1());
}),
原材料按钮(
子项:文本(“转到第2页”),
fillColor:selected==1?颜色。红色:颜色。灰色,
已按下:(){
selectedButton=1;
导航器。推(
context,MaterialPageRoute(builder:(context)=>Page2());
})
]);
}
}
设置状态
在按钮的上按下
。请提供一个示例。非常感谢,我有一个问题,我如何从另一个文件访问全局变量int-selectButton?其他文件已经可以看到每个全局变量。或者,如果您想更清楚,请将其作为静态变量放在新文件中的类中,然后将该文件导入所有其他文件中。再次感谢您,我理解,刚刚导入库并使用“as”注释,它对我有效。很抱歉,在本例中,您使用Navigator.push重定向并更改页面。有没有一种方法可以让我只更改同一页的正文内容,而不通过按此按钮更改到另一页?