dart - 如何以编程方式更改其子项中 main.dart AppBar 的标题?

标签 dart flutter appbar

我在 main.dart 中有一个 AppBar,我想将它定义为主要的子项,但是我想更改AppBar 本身的标题,当我在子页面时,我怎样才能正确地做到这一点?

void main() => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Flutter App",
      theme: ThemeData(
        primaryColor: Colors.cyan,
        brightness: Brightness.dark
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text("Main Dart"),
        ),
        body: HomeScreen(),
      ),
      routes: <String, WidgetBuilder>{
        '/homeScreen': (buildContext)=>HomeScreen(),
        '/second': (buildContext)=>Second() 
      },
    );
  }
}

//HomeScreen or Second Widget on different dart file

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    //here I want to change the title of Main Dart to HomeScreen
    return Container(
      child: Center(
        child: FlatButton(
          child: new Text("Home screen"),
          onPressed: (){
            Route route = MaterialPageRoute(builder: (context) => Second());
            Navigator.push(context, route);
          },
        ),
      ),
    );
  }
}

或者我需要在每个屏幕中放置 Scaffold(appBar:AppBar(...), ...)?这是最好的方法吗?

最佳答案

app_properties_bloc.dart 中为应用属性创建一个 BLoC

final appBloc = AppPropertiesBloc();

class AppPropertiesBloc{
  StreamController<String> _title = StreamController<String>();

  Stream<String> get titleStream => _title.stream;

  updateTitle(String newTitle){
    _title.sink.add(newTitle);
  }

  dispose() {
    _title.close();
  }
}

像这样在 AppBar 中使用流生成器:

AppBar(
   title: StreamBuilder<Object>(
       stream: appBloc.titleStream,
       initialData: "Main Dart",
       builder: (context, snapshot) {
           return Text(snapshot.data);
       }
   ),
),

使用它来更新按钮的 onPressed() 上的标题

onPressed: () {
    appBloc.updateTitle('new title');
},

关于dart - 如何以编程方式更改其子项中 main.dart AppBar 的标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55738886/

相关文章:

html - Windows 8 : Creating AppBar Style Buttons with HTML5/CSS

flutter - 如何在 flutter 中让 Appbar 的 IconButton 居中

android - Flutter RTL AppBar 图标位置

flutter - 我需要知道用户单击按钮时是否按下(按下)键

flutter - 如何在抖动中获得Json的 map 长度

image - Flutter 图像未加载(异常 : resolving an image codec)

flutter - 如何在 flutter 中初始化 WebView Controller

dart - 启用或禁用按钮时动画颜色变化

Flutter:如何制作一个按钮来显示我随机定义的无状态小部件?

dart - 在 Dart 中上传时如何压缩/减小图像大小?