1
resposta

Bottom overflowed by...

Olá. Preciso de ajuda, por favor.

Código no final da página.

Aparentemente, revisei algumas vezes, o código é o mesmo, inclusive, até criar o container para limitar o tamanho de 52 para altura e largura, então o overflow ocorre.

Somente quando altero o container para 52 de altura e 64 de largura, funciona ok.

Com overflow: height: 52 width: 52

Sem overflow: height: 52 width: 64

Imagens dos dois casos acima, sendo width de 64 sem overflow.

1 - A abordagem correta é apenas alterar o width do container?

2 - Pode ser alguma coisa em relação ao modelo de aparelho no emulador? (Uso o Pixel 3a API 30, recomendado)

3 - Pode ser alguma coisa referente às versões do flutter, da época da gravação para a atual?(abaixo)

"flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.16.4, on Microsoft Windows [versao 10.0.22631.3007], locale pt-BR) [✓] Windows Version (Installed version of Windows is version 10 or higher) [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0) [✓] Chrome - develop for the web [!] Visual Studio - develop Windows apps (Ferramentas de Build do Visual Studio 2019 16.11.32) ✗ The current Visual Studio installation is incomplete. Please use Visual Studio Installer to complete the installation or reinstall Visual Studio. [✓] Android Studio (version 2022.3) [✓] VS Code (version 1.85.1) [✓] Connected device (4 available) [✓] Network resources

! Doctor found issues in 1 category."

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeMesmo alterando o width para 64, é um quebra galho, pois o ícone e o texto ficam desalinhados. O texto "UP", fica mais para a esquerda.

Código do container do botão:

                  Container(
                    height: 52,
                    width: 52, // se ajustar para valor 64, funciona sem overflow
                    child: ElevatedButton(
                      onPressed: () {
                        setState(() {
                          nivel++;
                        });
                        print(nivel);
                      },
                      style: ButtonStyle(
                        backgroundColor:
                            MaterialStateProperty.all<Color>(Colors.blue),
                        shape: MaterialStateProperty.all<OutlinedBorder>(
                          RoundedRectangleBorder(
                            borderRadius: BorderRadius.circular(8.0),
                          ),
                        ),
                        foregroundColor:
                            MaterialStateProperty.all<Color>(Colors.white),
                      ),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        crossAxisAlignment: CrossAxisAlignment.end,
                        children: [
                          Icon(Icons.arrow_drop_up),
                          Text(
                            'UP',
                            style: TextStyle(fontSize: 12),
                          ),
                        ],
                      ),
                    ),
                  ),
1 resposta

Olá, Julio!

Pelo que você descreveu e pelas imagens fornecidas, parece que você está enfrentando um problema de layout no Flutter, onde o conteúdo está excedendo os limites do container. Vamos analisar suas dúvidas:

1 - Alterar o width do container é uma solução possível, mas pode não ser a ideal se isso causar desalinhamento ou outros problemas de layout. O ideal é entender a causa do overflow e ajustar o layout para que ele seja flexível e se adapte a diferentes tamanhos de tela e conteúdos.

2 - O modelo do aparelho no emulador pode influenciar como o layout é renderizado, especialmente se houver diferenças de densidade de pixels ou tamanho de tela. No entanto, o Flutter é projetado para fornecer uma experiência consistente em diferentes dispositivos, então é mais provável que o problema esteja relacionado ao seu código de layout.

3 - Mudanças nas versões do Flutter podem afetar o comportamento de widgets e layouts. É sempre bom verificar as notas de lançamento para ver se houve alguma alteração que possa influenciar seu código.

Para resolver o problema de overflow e alinhamento, você pode tentar algumas abordagens:

  • Utilize o widget FittedBox para escalar e ajustar o conteúdo dentro do container sem alterar as dimensões definidas.
  • Verifique se os widgets internos, como Icon e Text, têm margens ou paddings que possam estar causando o overflow.
  • Considere usar o widget Flexible ou Expanded para permitir que os widgets internos ocupem o espaço disponível de forma mais dinâmica.

Aqui está um exemplo de como você pode usar FittedBox:

Container(
  height: 52,
  width: 52,
  child: FittedBox(
    child: ElevatedButton(
      // Seu código do botão...
    ),
  ),
),

E um exemplo com Flexible:

Container(
  height: 52,
  width: 52,
  child: ElevatedButton(
    onPressed: () {
      // Sua função...
    },
    style: // Seu estilo...
    child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        Flexible(
          child: Icon(Icons.arrow_drop_up),
        ),
        Flexible(
          child: Text(
            'UP',
            style: TextStyle(fontSize: 12),
          ),
        ),
      ],
    ),
  ),
),

Experimente essas abordagens para ver se alguma delas resolve o problema do overflow e melhora o alinhamento do ícone e do texto. Lembre-se de que o layout no Flutter é bastante flexível, e pode haver várias maneiras de alcançar o resultado desejado.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software