如何在flutter中更改endDrawer图标?

时间:2018-08-21 23:24:35

标签: dart flutter

默认情况下,flutter中的endDrawer图标是汉堡包图标。我想将其更改为过滤器图标。

new Scaffold(
  endDrawer: Drawer(),
  ...
}

2 个答案:

答案 0 :(得分:9)

这应该做您想要的:

import 'package:flutter/material.dart';

class App extends StatefulWidget {
  @override
  _AppState createState() => _AppState();
}

class _AppState extends State<App> {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        endDrawer: Drawer(),
        appBar: AppBar(
          actions: [
            Builder(
              builder: (context) => IconButton(
                    icon: Icon(Icons.filter),
                    onPressed: () => Scaffold.of(context).openEndDrawer(),
                    tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip,
                  ),
            ),
          ],
        ),
        body: new Container(),
      ),
    );
  }
}

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

请注意,“ Builder”是必需的,以便IconButton可以在支架下获取上下文。否则,它将使用应用程序的上下文,因此将无法找到脚手架。

另一种(更清洁的)选项是制作一个包含IconButton的StatelessWidget。

答案 1 :(得分:1)

您可以使用自己的前导小部件替换提供的默认前导。 尽管您将不得不编写自己的逻辑来管理抽屉。

const initialState={
   school:[] //assuming it's an array
}
const schoolReducer =(state=initialState,action)=>{
   switch(action.type){
      case 'SET_SELECTED':{
          return {
              ...state,
              school:action.school
          }
      }
   }

}