簡體   English   中英

在腳手架的右上角放置一個 IconButton

[英]Place an IconButton on the top right corner of your scaffold

我想在我的 Scaffold 的右上角放置一個 Iconbutton 以編程方式打開一個抽屜。 它應該是每個顯示類型的右上角。 使用 appbar 會破壞頁面的外觀,因為我只需要一個顯示抽屜可用的小圖標。 我如何以最好的方式做到這一點? 我的腳手架是默認的。 我怎樣才能以最好的方式實現這一目標?

您可以使用Stack來實現這一點。 用 Stack 小部件包裹 Scaffold 的主體,並將Positioned小部件用作堆棧的第一個子級。

GlobalKey<ScaffoldState> _scafKey = GlobalKey();

 @override
Widget build(BuildContext context) {

return SafeArea(
    child: Scaffold(
      key: _scafKey,
      drawer: YourDrawerWidget(),
      body: Stack(
        children: <Widget>[
          Positioned(
              top: 0,
              right: 0,
              child: IconButton(
                  icon: Icon(Icons.short_text),
                  onPressed: (){
                    _scafKey.currentState.openDrawer();
                  })),
          Container(),
       ],
     ),
   ),
 );
}

用您的小部件(腳手架的原始主體)替換容器。

以及 IconButton 的圖標到您的圖標。

這里的 MyHomePage class 是您的腳手架所需的 AppBar。 您需要做的就是更改圖標。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: MyHomePage(),
        drawer: Container(
          width: 100,
          color: Colors.red,
        ),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget implements PreferredSizeWidget {
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Container(
        color: Colors.transparent,
        child: Row(
          mainAxisAlignment: MainAxisAlignment.end,
          children: <Widget>[
            AppBarAction(),
          ],
        ),
      ),
    );
  }

  @override
  Size get preferredSize => Size.fromHeight(60);
}

class AppBarAction extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return IconButton(
      icon: Icon(Icons.print),
      onPressed: () {
        Scaffold.of(context).openDrawer();
      },
    );
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM