Flutter implementa a explicação detalhada da janela pop-up de seleção inferior

Flutter percebe a explicação detalhada da janela pop-up de seleção inferior (autoteste IOS)

Use os próprios componentes do flutter:
showModalBottomSheet ()

Sem muita bobagem, basta ir para o código de amostra:

//出现底部弹窗
showModalBottomSheet(
  context: context,
  //自定义底部弹窗布局
  shape: new RoundedRectangleBorder(
    borderRadius: BorderRadius.only(
        topLeft: Radius.circular(20.0),
        topRight: Radius.circular(20.0)),
  ),
  builder: (BuildContext context) {
    //返回内部
    return new Container(
      height: ScreenUtil().setHeight(300),
      child: new Column(
        children: [
          new Container(
            margin: EdgeInsets.only(top: 10.0),
            child: new GestureDetector(
              onTap: () {
                Navigator.pop(context);
              },
              child: new Image.asset(
                'images/bottom_arrow .png',
                height: ScreenUtil().setHeight(30.0),
              ),
            ),
          ),
          new Container(
            decoration: BoxDecoration(
              border: Border(
                  bottom: BorderSide(
                      width: 1.0, color: Colors.black12)),
            ),
            height: ScreenUtil().setHeight(110.0),
            width: ScreenUtil().setWidth(750),
            child: new InkWell(
              onTap: () {
                print('点击了拍照');
                _getCameraImage();
                Navigator.pop(context);
              },
              child: new Center(
                child: new Text(
                  '拍照',
                  style: TextStyle(
                      fontSize: ScreenUtil().setSp(30.0),
                      fontWeight: FontWeight.bold),
                ),
              ),
            ),
          ),
          new Container(
            height: ScreenUtil().setHeight(110.0),
            width: ScreenUtil().setWidth(750),
            child: new InkWell(
              onTap: () {
                print('点击了选择照片');
                _getImage();
                Navigator.pop(context);
              },
              child: new Center(
                child: new Text(
                  '选择照片',
                  style: TextStyle(
                      fontSize: ScreenUtil().setSp(30.0),
                      fontWeight: FontWeight.bold),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  },
);

Eu também adicionei uma função de selecionar fotos e tirar fotos.
Se você quiser saber mais sobre como selecionar fotos e tirar fotos, verifique meu outro artigo
Explicação detalhada do plug-in Flutter imagem seleção image_picker (oficial)

Desta vez, falaremos principalmente sobre pop-ups:

Uso básico:
showModalBottomSheet(
    context:context,
    build:(BuildContext context){
        return Container(
            child:new Column(
                children:[
                    new Text('第一行'),
                    new Text('第二行'),    
                ]
            ),
        );
    }
);

showModalBottomSheet ()
Contexto de atributos comuns :
forma de contexto : a forma da janela pop-up (traduzida em forma)
build: (BuildContext context) {}: construir layout interno (widget de retorno)

Você pode usar o código acima para obter um efeito pop-up simples.
Como sua construção precisa retornar um widget, você pode personalizar o layout.

Imagem do efeito:

Insira a descrição da imagem aqui

Mais tarde, farei upload desta demonstração para o GitHub, você pode marcar este artigo primeiro

Esta demonstração contém várias pequenas funções, que criei para tornar o projeto mais eficiente no futuro,
então preste mais atenção a ela.

Finalmente, há um ponto muito importante:

Cena: o
que fazer se quiser fechar a janela pop-up ao clicar para selecionar uma foto ou tirar uma foto

Problema: Depois que a
janela for construída, você descobrirá que só pode clicar fora da janela para fechá-la.
Depois de ler o código-fonte, isso não é resolvido.

Solução:
Por fim, pensei que o Navigator
só precisa de uma linha de código para resolver o
Navigator.pop (contexto),
por isso é uma solução perfeita, se você estiver interessado, experimente!

Siga-me e cresça junto!
-As.Kai

Acho que você gosta

Origin blog.csdn.net/qq_42362997/article/details/112284681
Recomendado
Clasificación