1 minute read

์‚ฌ์šฉ์ค‘์ด๋˜ ์ฟ ํผํ‹ฐ๋…ธ ํ”ผ์ปค๊ฐ€ ์ƒ์ˆ˜๋กœ ์ง€์ •๋˜์–ด ์žˆ์–ด ์•„์ดํŒจ๋“œ ๋“ฑ ์—์„œ๋Š” ๋‹ค์†Œ ์ž‘๊ฒŒ ๋А๊ปด์ ธ ๋ฏธ๋””์–ด์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๊ธฐ ๋†’์ด์˜ %๋กœ ์ƒ์„ฑ๋˜๋„๋ก ๋ณ€๊ฒฝํ•˜์˜€๋‹ค.

ํ”ผ์ปค๋Š” ๊ทธ๋ผ๋””์–ธํŠธ ํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ผ๋””์–ธํŠธ ์œ„์ ฏ์„ ๋งŒ๋“ค์–ด ์Šคํƒ์œผ๋กœ ์Œ“์•„์„œ ์‚ฌ์šฉ์ค‘์ด์—ˆ๋Š”๋ฐ ์ด ๊ทธ๋ผ๋””์–ธํŠธ ์œ„์ ฏ ๋˜ํ•œ ๋†’์ด๊ฐ€ ๊ณ ์ • ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์ด ํ•„์š”ํ–ˆ๋‹ค.

  • ๊ทธ๋ผ๋””์–ธํŠธ ๋†’์ด๋„ ํ”ผ์ปค์˜ ๋†’์ด์— ๋งž์ถฐ ๋ณ€๊ฒฝ๋˜์–ด์•ผ ํ•จ
    • ๋””์ž์ธ์ฒ˜๋Ÿผ ํ”ผ์ปค์˜ ์ผ์ • ๋น„์œจ์ด ๊ทธ๋ผ๋ฐ์ด์…˜ ๋˜์–ด์•ผ ํ•จ
    • ํ˜„์žฌ๋Š” ๋‘๊ฐœ์˜ ์œ„์ ฏ์„ ์œ„, ์•„๋ž˜๋กœ ๋ถ™์ด๋ฏ€๋กœ ๊ฐœ๋ณ„ ๊ฐ’ ํ•„์š”
    • โ‡’ ํ”ผ์ปค ํ•œ ์นธ์˜ ๋†’์ด๋ฅผ ๊ตฌํ•˜๋Š”๊ฑด ๋ถˆํ•„์š”ํ•œ ๋น„์šฉ์ด ๋“ค๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์งˆ ๊ฒƒ ๊ฐ™์Œ
class _PickerGradient extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final color = Colors.white;
    final gradientColors = [color, color.withOpacity(0.30)];
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: List.generate(
        2,
        (i) => Container(
          height: 40,
          decoration: BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              colors: i == 0 ? gradientColors : gradientColors.reversed.toList(),
            ),
          ),
        ),
      ),
    );
  }
}

๊ทธ๋Ÿฌ๋˜ ์ค‘ CupertinoPicker์˜ ๊ทธ๋ผ๋ฐ์ด์…˜์ด ์–ด๋А ์—†์–ด์กŒ๋‹ค๋Š” ์ด์Šˆ๊ธ€์„ ๋ณด๊ฒŒ๋๋‹ค.

์›๋ž˜ ์—†๋˜๊ฒŒ ์•„๋‹ˆ๋ผ ์—†์–ด์ง„๊ฑฐ์˜€์–ด?

CupertinoPicker top and bottom gradient screen no longer appearing ยท Issue #66357 ยท flutter/flutter

ํ•ด๋‹น ์ด์Šˆ๋Š” ํ˜„์žฌ Engineer reviewed ๋‹จ๊ณ„์— ์žˆ๊ณ , ๊ฐ€๊น๊ฑฐ๋‚˜ ๋จผ ๋ฏธ๋ž˜์— ํ•ด๊ฒฐ๋  ๋•Œ ๊นŒ์ง€ ์‚ญ์ œ๋œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์“ฐ๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

class _PickerGradient extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final gradientColor = Colors.white;
    return Positioned.fill(
      child: IgnorePointer(
        child: Container(
          decoration: BoxDecoration(
            gradient: LinearGradient(
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              colors: [
                gradientColor,
                gradientColor.withAlpha(0xF2),
                gradientColor.withAlpha(0xDD),
                gradientColor.withAlpha(0),
                gradientColor.withAlpha(0),
                gradientColor.withAlpha(0xDD),
                gradientColor.withAlpha(0xF2),
                gradientColor,
              ],
              stops: const <double>[0.0, 0.05, 0.09, 0.22, 0.78, 0.91, 0.95, 1.0],
            ),
          ),
        ),
      ),
    );
  }
}

์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ๋Š”

  • ๋‘๊ฐœ์˜ ๊ทธ๋ผ๋ฐ์ด์…˜์„ ํ•ฉ์นœ๊ฒŒ ์•„๋‹Œ Positioned.fill ์†์„ฑ์œผ๋กœ ์ „์ฒด๋ฅผ ์ฑ„์šฐ๋Š” ๋ฐฉ์‹
    • โ‡’ ๋น„์œจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Œ
  • ๊ทธ๋ผ๋ฐ์ด์…˜ ๋‹จ๊ณ„๊ฐ€ ๋” ์„ธ๋ถ„ํ™” ๋˜์–ด์žˆ์Œ

์˜ ์ด์œ ๋กœ ๊ธฐ์กด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ ๋ฐ ๊ฐœ์„ ๋๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ๋Š” ์œ„, ์•„๋ž˜๋กœ ์œ„์ ฏ ๋‘๊ฐœ๊ฐ€ ํ•ฉ์ณ์ ธ์žˆ๊ณ  ๊ฐ€์šด๋ฐ๋Š” ๋น„์–ด์žˆ๋Š” ์ƒํƒœ์˜€์ง€๋งŒ ๋ณ€๊ฒฝ ์ฝ”๋“œ๋Š” ์ „์ฒด๋ฅผ ์ฑ„์šฐ๋Š” ์œ„์ ฏ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ IgnorePointer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ์ธํ„ฐ ์ด๋ฒคํŠธ์—์„œ ์ œ์™ธ์‹œ์ผœ์•ผ ํ•œ๋‹ค.


์ฐธ๊ณ ๋งํฌ

IgnorePointer class

์ž๋งคํ’ˆ AbsorbPointer class


Updated: