Flutter Appbar操作

时间:2018-10-24 13:50:49

标签: android flutter

在android中,每个片段都具有重写onCreateOptionsMenu的功能,从而可以在每个片段中添加单独的选项菜单。当应用栏对应用程序通用时,如何在从抽屉中更改页面时用颤动进行操作

3 个答案:

答案 0 :(得分:2)

您可以在每个屏幕中添加AppBar。

 class SDF extends StatefulWidget {
  @override
  _SDFState createState() => _SDFState();
}

class _SDFState extends State<SDF> {
  int body = 0;

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("I Am AppBar"),
        actions: getActions(body),
      ),
      body: getBody(body), //here you can add your body
      drawer: Drawer(
        child: Column(
          children: <Widget>[
             RaisedButton(
          onPressed: () {
            setState(() {
              body = 0; 
            });

          },
          child: Text("Home"),
        ),
        RaisedButton(
          onPressed: () {
            setState(() {
              body = 1;
            });

          },
          child: Text("Settings"),
        ),
          ],
        ),
      ),
    );
  }

  getBody(int body) {
    switch (body) {
      case 0:
        return Container(); // Home Screen

      case 1:
        return Container(); // Settings Screen
    }
  }

  getActions(int body) {
    switch (body) {
      case 0:
        return [
          Icon(Icons.settings),
          Icon(Icons.home),
        ]; // Home Screen

      case 1:
        return [
          Icon(Icons.home),
          Icon(Icons.settings),
        ]; // Settings Screen
    }
  }
}

答案 1 :(得分:0)

在构建 AppBar 时添加 actions。在页面的 State 对象中执行此操作,并使用该状态(也控制您的主体)来控制您的操作创建。使用例如IconButton 的列表:

// We're withing the PageState here. e.g.
// class MyPageState extends State<MyStateObject> {

Widget createAppBar() {
  return AppBar(
    actions: createAppBarActions()    
  );
}

List<Widget> createAppBarActions() {
  // use your app state here to create the actions you need
  // use if / else or switch / case for the states
  return [
    IconButton(
      icon: Icon(Icons.share),
      onPressed : onSharePressed,
    ),
  ];
}

void onSharePressed() {
  // execute the action here
}

如果您使用上述 material 包,请不要忘记导入 Icons

import 'package:flutter/material.dart';

答案 2 :(得分:0)

flutter 的丰富之处在于您不必编写许多属性,例如 html、css 之类的很多东西
flutter 使用一个属性提供了简单的方法,例如下面的示例

在 Scaffold 下只需添加此代码

appBar: AppBar(
      title: Text("Action Demo"),
      actions: <Widget>[
        IconButton(
          icon: Icon(
            Icons.settings,
            color: Colors.white,
          ),
          onPressed: () {
            // do something
          },
        )
      ],
    ),