Flutter 更新主体的颤振按钮

Flutter 更新主体的颤振按钮,flutter,button,setstate,Flutter,Button,Setstate,您好,我如何才能使2个按钮,将更新像标签正文内容。当您单击第1个按钮时,它将显示为选中,内容将更改(appBar标题、正文、滑块等)。当您单击另一个按钮时,它将显示为选中,并将再次更改内容。但按钮将出现在两个内容中。就像下面这个例子一样 有一些看起来像选项卡,但区别在于它们正在更改状态并更新页面 最简单的方法是创建一个全局变量,该变量保存所选按钮的值 将其从main()方法中取出 您可以从项目中的每个类和文件访问它 其他方式需要提供程序和状态管理体系结构 工作样本: import 'packag

您好,我如何才能使2个按钮,将更新像标签正文内容。当您单击第1个按钮时,它将显示为选中,内容将更改(appBar标题、正文、滑块等)。当您单击另一个按钮时,它将显示为选中,并将再次更改内容。但按钮将出现在两个内容中。就像下面这个例子一样

有一些看起来像选项卡,但区别在于它们正在更改状态并更新页面


最简单的方法是创建一个全局变量,该变量保存所选按钮的值

将其从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重定向并更改页面。有没有一种方法可以让我只更改同一页的正文内容,而不通过按此按钮更改到另一页?