Jak se ElevatedButton s přechodem pozadí v Flutter?

0

Otázka

Zjistil jsem, že více příkladů na přetečení zásobníku, jak využít RaiseButton s gradient pozadí, ale od té doby vysílání těch odpovědí, RaiseButton se již nepoužívá.

Většina řešení jsem našel na ElevatedButton s gradient pozadí, byly neúplné do určité míry; buď gradient nepokrývá celé pozadí, nebo zastínění je vypnutý.

To je nejvíce kompletní odpověď jsem našel, ale onPress nadmořská výška představuje nepříjemný stín.

Níže jsem poslal odpověď s můj nejlepší pokus o ElevatedButton s gradient pozadí (Q&styl). Prosím, komentář na způsoby, jak vidíte, moje odpověď lepší!

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

Nejlepší odpověď

0

Po hodně pokusů a omylů, se mi podařilo znovu ElevatedButton.

Konečný výsledek:

Gradient Button

Níže je můj kód pro opakované použití gradientu tlačítko.

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

V jiných jazycích

Tato stránka je v jiných jazycích

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