简体   繁体   English

如何在 flutter 中打开此类警报对话框

[英]How to open this type of alert dialog in flutter

我想在颤动中显示这种类型的警报对话框。怎样才能做到这一点 I wanted to show dialog in my application.我想在我的应用程序中显示对话框。 How can i achieve this using flutter我如何使用 flutter 实现这一目标

You can use a PopupMenuButton ( https://api.flutter.dev/flutter/material/PopupMenuButton-class.html ) to achieve this in flutter. You can use a PopupMenuButton ( https://api.flutter.dev/flutter/material/PopupMenuButton-class.html ) to achieve this in flutter. See example code below:请参见下面的示例代码:

PopupMenuButton<int>(
    itemBuilder: (context) => [
      const PopupMenuItem(
        value: 1,
        child: Center(
          child: Icon(
            Icons.download_outlined,
            size: 30.0,
          ),
        ),
      ),
      const PopupMenuItem(
        value: 2,
        child: Center(
          child: Icon(
            Icons.link,
            size: 30.0,
          ),
        ),
      ),
      const PopupMenuItem(
        value: 2,
        child: Center(
          child: Icon(
            Icons.share,
            size: 30.0,
          ),
        ),
      ),
    ],
    icon: const Icon(
      Icons.more_horiz,
      size: 40.0,
    ),
    offset: const Offset(150, -150),
  );

The above example popups a list of Icons when the PopupMenuButton is pressed.上面的示例在按下 PopupMenuButton 时会弹出一个图标列表。 You can adapt this to your use-case above.您可以根据上面的用例进行调整。

Finally I found a Solution thanks enfinity.最后我找到了一个解决方案,感谢 enfinity。 Here how i solve the problem.这是我如何解决问题的。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      home: new MyHomePage(),
    );
  }
}

/// An arbitrary widget that lives in a popup menu
class PopupMenuWidget<T> extends PopupMenuEntry<T> {
  const PopupMenuWidget({ Key key, this.height, this.child }) : super(key: key);

  @override
  final Widget child;

  @override
  final double height;

  @override
  bool get enabled => false;

  @override
  _PopupMenuWidgetState createState() => new _PopupMenuWidgetState();
}

class _PopupMenuWidgetState extends State<PopupMenuWidget> {
  @override
  Widget build(BuildContext context) => widget.child;
}


class MyHomePage extends StatelessWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        actions: <Widget>[
          new PopupMenuButton<String>(
            onSelected: (String value) {
              print("You selected $value");
            },
            itemBuilder: (BuildContext context) {
              return [
                new PopupMenuWidget(
                  height: 40.0,
                  child: new Row(
                    children: [
                      IconButton(
                                          icon: Icon(
                                              Icons.remove,
                                            color: Colors.green,
                                          ),
                                          onPressed: () {
                                            print("Remove");
                                          }),
                                      Text("1"),
                                      IconButton(
                                          icon: Icon(
                                            Icons.add,
                                            color: Colors.green,
                                          ),
                                          onPressed: () {
                                            print("Add");
                                          }),
                    ],
                  ),
                ),
              ];
            }
          ),
        ],
      ),
    );
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM