Buscar pacotes, repositórios e categorias de apps

Capa de flutter_inset_shadow
Detalhes do pacotev2.0.3

flutter_inset_shadow

Este pacote estende BoxShadow e BoxDecoration para suportar a propriedade inset.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
23,6 mil
Curtidas
38
Pontos Pub
150

Instalar pacote

flutter pub add flutter_inset_shadow

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

O pacote flutter_inset_shadow aprimora as classes BoxShadow e BoxDecoration do Flutter ao adicionar suporte à propriedade inset, permitindo que os desenvolvedores criem sombras que aparecem dentro dos limites de um widget, em vez de fora. Isso é particularmente útil para criar efeitos de profundidade como brilho interno ou designs recuados. O pacote se integra perfeitamente aos componentes da interface do Flutter existentes e oferece suporte a todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux. Simplifica a implementação de elementos de interface sutis e modernos sem exigir pintura personalizada ou soluções complexas.

Casos de uso

  • Criando sombras internas para cartões e contêineres
  • Projetando elementos de interface do usuário embutidos ou afundados
  • Adicionando efeitos sutis de profundidade em interfaces modernas
  • Implementando efeitos de borda brilhante ou interna
  • Melhorando a hierarquia visual com sombras internas

Principais recursos

  • Suporta sombras internas por meio da extensão BoxShadow
  • Extende BoxDecoration para renderização de sombra interna
  • Compatibilidade multiplataforma
  • Integração simples com widgets existentes
  • Mínimo boilerplate necessário

Indicado para

  • Designers de UI procurando efeitos de sombra avançados
  • Desenvolvedores de aplicativos modernos com design plano
  • Projetos que exigem profundidade sutil sem bibliotecas externas
  • Equipes usando o Flutter para aplicativos multiplataforma

Considerações

  • Pode afetar o desempenho em layouts complexos
  • Limitado ao estilo básico de sombra
  • Não adequado para sombras altamente dinâmicas ou animadas
  • Requer testes cuidadosos em diferentes densidades de tela

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Flutter Inset Shadow

Flutter currently does not support the inset property for shadows. This type of shadow is for example used in Neumorphism.

This package extends BoxShadow and BoxDecoration to support the inset property.

[!IMPORTANT]

What happened to flutter_inset_box_shadow?

Previously, this package was called flutter_inset_box_shadow.

Unfortunately, I've lost access to the verified publisher, allowing me to publish updates to the package.

So I decided to publish the package under a new name.

For more information, you can read https://github.com/chitochi/flutter_inset_shadow/issues/7. 😄

Features

  • All properties of BoxShadow are supported.
  • If the property of a BoxShadow changes during a transition, we first make the old shadow disappear before making the new one appear.

Example

A simple neumorphic container

import 'package:flutter/material.dart' hide BoxDecoration, BoxShadow;
import 'package:flutter_inset_shadow/flutter_inset_shadow.dart';

void main() {
  runApp(const ExampleApp());
}

const primaryColor = Color(0xFFE0E0E0);

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Example',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        backgroundColor: primaryColor,
        body: Center(
          child: Container(
            width: 150,
            height: 150,
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(50),
              color: primaryColor,
              boxShadow: const [
                BoxShadow(
                  offset: Offset(-20, -20),
                  blurRadius: 60,
                  color: Colors.white,
                  inset: true,
                ),
                BoxShadow(
                  offset: Offset(20, 20),
                  blurRadius: 60,
                  color: Color(0xFFBEBEBE),
                  inset: true,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Usage

First, add the package:

flutter pub add flutter_inset_shadow

Then, import it as follows:

import 'package:flutter/material.dart' hide BoxDecoration, BoxShadow;
import 'package:flutter_inset_shadow/flutter_inset_shadow.dart';

It is necessary to hide BoxDecoration and BoxShadow because this library replaces them.

BoxShadow now has a boolean inset property, which is set to false by default.

return Container(
  decoration: BoxDecoration(
    boxShadow: [
      BoxShadow(
        blurRadius: 5,
        color: Colors.red,
      ),
      BoxShadow(
        offset: Offset(1, 2),
        blurRadius: 5,
        spreadRadius: 2,
        color: Colors.green,
        inset: true,
      ),
    ],
  ),
);

How does it work?

The algorithm used is the same as that of Blink, the Chromium rendering engine.

The idea is that we draw a rectangle hollowed out by another rounded rectangle inside, then we blur this hollowed rectangle.

Categorias

Repositório-fonte

Projetos que usam este pacote