0
votes

Empêcher de cacher la feuille d'affichage de ShowModalbottoms de la touche extérieure

est-il possible d'empêcher modalbottomsheet de se cacher de la touche extérieure? Comme dans showdialog () nous pouvons utiliser barrière "/ code> propriété pour empêcher la boîte de dialogue de la fermeture de la touche extérieure


0 commentaires

4 Réponses :


1
votes

Vous devez utiliser showbottomsheet () qui n'inclut pas la barrière au lieu d'utiliser showmodalbottomsheet () .

Plus d'infos ici


4 commentaires

Désolé gars, je sais pour `` showbottomsheet mais je cherche showmodalbottomsheet ().


La seule différence entre showmodalbottomsheet et showbottomsheet est que ce dernier ne peut pas être licencié en touchant en dehors de son contexte. Et n'est-ce pas la même chose que vous avez demandée?


Oui, mais je pense que nous pouvons accéder à / toucher le widget externe après l'ouverture du showbottomsheet ? Corrige moi si je me trompe ?


Vous avez raison, vous pouvez accéder à des widgets extérieurs, puis-je savoir quel modèle exact vous recherchez? Vous voulez simplement empêcher ces widgets externes de se faire cliquer lorsque la feuille est ouverte? Vous pouvez utiliser le widget d'absorbant absorberbpointer pour cette affaire.



0
votes
    class MyHomePage extends StatefulWidget {
    @override
    _MyHomePageState createState() => _MyHomePageState();
    }

    class _MyHomePageState extends State<MyHomePage> {
    final _scaffoldKey = new GlobalKey<ScaffoldState>();
    VoidCallback _showPersBottomSheetCallback;

    @override
    void initState() {
        super.initState();
        _showPersBottomSheetCallback = _showBottomSheet;
    }

    void _showBottomSheet() {
        setState(() {
        _showPersBottomSheetCallback = null;
        });

        _scaffoldKey.currentState
            .showBottomSheet((context) {
            return new Container(
                color: Colors.greenAccent,
                height: 300.0,
                child: new Center(
                child: new Text("Hi BottomSheet"),
                ),
            );
            })
            .closed
            .whenComplete(() {
            if (mounted) {
                setState(() {
                _showPersBottomSheetCallback = _showBottomSheet;
                });
            }
            });
    }

    @override
    Widget build(BuildContext context) {
        return new Scaffold(
        key: _scaffoldKey,
        appBar: new AppBar(
            title: new Text("Flutter BottomSheet"),
        ),
        body: GestureDetector(
            behavior: HitTestBehavior.opaque,
            onTap: () {},
            child: Padding(
            padding: const EdgeInsets.only(top: 10.0),
            child: new Center(
                child: new Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                    new RaisedButton(
                    onPressed: _showPersBottomSheetCallback,
                    child: new Text("Persistent"),
                    ),
                ],
                ),
            ),
            ),
        ),
        );
    }
    }

1 commentaires

Je considère qu'il s'agit d'une solution de contournement au lieu d'une solution lorsque vous avez déjà dédié showbottomsheet () rappel.



0
votes

Essayez le réglage isdismissible à FALSEMODAlbottomsheet xxx

où feuillewidget est le widget que vous essayez d'appeler comme fond inférieur


0 commentaires

0
votes

Vous pouvez utiliser ISDISMISSIBLE: FALSE code> et Enablefrag: FALSE code> Comme ceci

showModalBottomSheet(
      isDismissible: false,
      enableDrag: false,

      builder: (context) {
        return Container(
         height: 100.0
       )
      }
  );


0 commentaires