Comment faire un ElevatedButton avec un dégradé d'arrière-plan de Scintillement?

0

La question

J'ai trouvé plusieurs exemples de dépassement de la pile de façon à utiliser un RaiseButton avec un dégradé d'arrière-plan, mais depuis l'affichage de ces réponses, RaiseButton a été désapprouvée.

La plupart des solutions que j'ai trouvé pour un ElevatedButton avec un dégradé d'arrière-plan ont été incomplète, à un certain degré; soit le gradient de ne pas couvrir la totalité de l'arrière-plan ou l'ombrage est éteint.

Cela a été la réponse la plus complète que j'ai trouvé, mais le onPress élévation présente un cognement de l'ombre.

Ci-dessous, j'ai posté une réponse à ma meilleure tentative d'un ElevatedButton avec un dégradé d'arrière-plan (Q&A de style). S'il vous plaît commenter de la façon dont vous voyez ma réponse améliorée!

button dart flutter
2021-11-23 15:45:52
1

La meilleure réponse

0

Après beaucoup d'essais et d'erreurs, j'ai réussi à recréer le ElevatedButton.

Résultat final:

Gradient Button

Ci-dessous mon code pour une réutilisables bouton dégradé.

import 'package:flutter/material.dart';

class GradientElevatedButton extends StatelessWidget {
  const GradientElevatedButton({
    Key? key,
    required this.child,
    required this.onPressed,
    required this.linearGradient,
  }) : super(key: key);

  final Widget child;
  final VoidCallback onPressed;
  final LinearGradient linearGradient;

  @override
  Widget build(BuildContext context) {
    return Padding(
      // ElevatedButton has default 5 padding on top and bottom
      padding: const EdgeInsets.symmetric(
        vertical: 5,
      ),
      // DecoratedBox contains our linear gradient
      child: DecoratedBox(
        decoration: BoxDecoration(
          gradient: linearGradient,
          // Round the DecoratedBox to match ElevatedButton
          borderRadius: BorderRadius.circular(5),
        ),
        child: ElevatedButton(
          onPressed: onPressed,
          // Duplicate the default styling of an ElevatedButton
          style: ElevatedButton.styleFrom(
            // Enables us to see the BoxDecoration behind the ElevatedButton
            primary: Colors.transparent,
            // Fits the Ink in the BoxDecoration
            tapTargetSize: MaterialTapTargetSize.shrinkWrap,
          ).merge(
            ButtonStyle(
              // Elevation declared here so we can cover onPress elevation
              // Declaring in styleFrom does not allow for MaterialStateProperty
              elevation: MaterialStateProperty.all(0),
            ),
          ),
          child: child,
        ),
      ),
    );
  }
}

2021-11-23 15:45:52

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................