[Flutter๐Ÿ“ฑ]๋žœ๋ค์œผ๋กœ Color ์ƒ์„ฑํ•˜๊ธฐ

gou5metยท2021๋…„ 6์›” 14์ผ
0
post-thumbnail

๊ทธ๋ƒฅ ํ˜ธ๊ธฐ์‹ฌ๐Ÿ˜‹

์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ„์ ฏ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋˜ ์ค‘, AnimatedContainer๋ฅผ ํ•™์Šตํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ„ฐ์น˜ํ•˜๋ฉด ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋žœ๋ค์œผ๋กœ ๋ณ€ํ•˜๋„๋ก ํ•˜๋Š” ์˜ˆ์ œ์˜€๋‹ค. ์ด๋ฏธ์ง€ ๋ง๊ณ ๋„ ๋‹ค๋ฅธ ์œ„์ ฏ๋“ค๋„ ํ•ด๋ณด๋˜ ์ค‘, ๊ฐ‘์ž๊ธฐ 'ํ„ฐ์น˜ํ•  ๋•Œ๋งˆ๋‹ค ์ƒ‰๊น”๋„ ๊ฐ™์ด ๋ณ€ํ•˜๋ฉด ๋” ๋ณผ๋งŒ ํ•˜๊ฒ ๋Š”๋ฐ?' ์ƒ๊ฐ์ด ๋“ค์–ด ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

3๊ฐ€์ง€ ๋ฐฉ๋ฒ•๐ŸŽจ

๋žœ๋ค์œผ๋กœ ์ƒ‰์ƒ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์—” ์ด ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ธ€์„ ๋ณด๊ณ  ๋งˆ์Œ์— ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด๋ณด์ž.

1. Colors.primaries ์™€ Random class

Colors ํด๋ž˜์Šค๋Š” 18๊ฐœ์˜ ๊ฒฌ๋ณธ ๋จธํ„ฐ๋ฆฌ์–ผ ๋””์ž์ธ ์ƒ‰์ƒ ํŒ”๋ ˆํŠธ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
Random ํด๋ž˜์Šค์—๋Š” 0๋ถ€ํ„ฐ ์ง€์ •๋œ ์ตœ๋Œ€๊ฐ’๊นŒ์ง€ ๋ฒ”์œ„์—์„œ ์ž„์˜์˜ ์ •์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” nextInt๋ผ๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค.

๋žœ๋คํ•œ ์ƒ‰์ƒ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

Color _randomColor = Colors.primaries[Random().nextInt(Colors.primaries.length)];

๋งŒ์•ฝ ๋”์šฑ ๋žœ๋ค์„ฑ์„ ์ฃผ๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.

Color _randomColor = Colors.primaries[Random().nextInt(Colors.primaries.length)]
	[Random.nextInt(9) * 100];

๐Ÿ“Œ๋ฐ˜๋“œ์‹œ โ€˜package:flutter/material.dartโ€™ ์™€ โ€˜dart:mathโ€™. ๋ฅผ import ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ „์ฒด ์ฝ”๋“œ

import 'package:flutter/material.dart';
import 'dart:math';
(์ค‘๋žต)

class _MyHomePageState extends State<MyHomePage> {
  var _size = 100.0;
  final _random = Random();

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter'),
      ),
      body: Center(
        child: GestureDetector(
          onTap: () {
            final random = Random();
            setState(() {
              _size = random.nextInt(200).toDouble() + 100;
            });
          },
          child: AnimatedContainer(
            duration: Duration(seconds: 1),
            width: _size,
            height: _size,
            child: Container(
              color: Colors.primaries[_random.nextInt(Colors.primaries.length)]
                  [_random.nextInt(9) * 100],
            ),
            curve: Curves.linearToEaseOut,
          ),
        ),
      ),
    );

2. Color class ์™€ Random class

Colors ํด๋ž˜์Šค๋Š” ์•„๋ฆ„๋‹ต๊ณ  ํ‘œ์ค€์ ์ธ ์ปฌ๋Ÿฌ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ปฌ๋Ÿฌ์˜ ์ˆ˜๊ฐ€ ๋งŽ์ง€ ์•Š๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค.
Color ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๋žœ๋ค ์ƒ‰์ƒ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

// ์ƒ๋žต
child: Container(
  color: Color.fromARGB(
    _random.nextInt(256), 
    _random.nextInt(256), 
    _random.nextInt(256), 
    _random.nextInt(256),
    ),
),

3. third-party package

๋žœ๋ค ์ƒ‰์ƒ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ํ•„์š”๊นŒ์ง„ ์—†์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งŒ์˜ ์žฅ์ ์ด ์žˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด random-color ํŒจํ‚ค์ง€๋Š” ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ƒ‰์ƒ์˜ ๋ฒ”์œ„๋‚˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ์ƒ‰์ƒ๋งŒ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

์„ค์น˜

dependencies:
  random_color: ^1.0.5

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ

import 'package:random_color/random_color.dart';

RandomColor _randomColor = RandomColor();

Color _color = _randomColor.randomColor(colorHue: ColorHue.red);

์œ„ ์ฝ”๋“œ๋Š” ๋ถ‰์€ ๊ณ„์—ด์˜ ์ƒ‰์ƒ๋งŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


๋งˆ์น˜๋ฉฐ

์˜ค๋Š˜์€ ๋žœ๋ค์œผ๋กœ ์ƒ‰์ƒ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. ์‹ค์ œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ผ์€ ๊ทธ๋ ‡๊ฒŒ ๋งŽ์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋ก  ์กฐ๊ธˆ ๊ท€์ฐฎ์•„๋„ random-color ํŒจํ‚ค์ง€๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.๐Ÿฅด

profile
ํ”Œ๋Ÿฌํ„ฐ ๊ณต๋ถ€ ์ค‘์— ์žˆ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€