What's new

Flutter

Oden Sama

Forum Veteran
Established
Joined
May 30, 2016
Posts
934
Reaction
92
Points
989
gawan mo ako ng flutter code na may 14 na container, sa loob ng container, may text at copy button, ang nilalaman ng text ay ang hex code ng color na nasa loob ng container.
lagyan din ng floating button, kapag pinindot ang button, lalabas ang showdialog na nakapaloob doon lahat ng material color na meron ang flutter may select button rin sa baba. kapag pinindot ko ang color, at pinindot ang select, magpapalit ng kulay ang lahat ng container pero ang kulay ay magkakaiba, gawin itong swatch color, at ang text na nasa loob ng container ay magiiba rin, magbabatay ito sa swatch color hexcode. example kapag pinili ko ang red at pinidot ang select. mapapalitan lahat ng color ng container ng swatch color ng red
 
Narito ang isang halimbawa ng Flutter code na sumusunod sa iyong hiling:

Code:
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ContainerPage(),
    );
  }
}

class ContainerPage extends StatefulWidget {
  @override
  _ContainerPageState createState() => _ContainerPageState();
}

class _ContainerPageState extends State<ContainerPage> {
  List<Color> containerColors = [
    Colors.red,
    Colors.blue,
    Colors.green,
    Colors.yellow,
    Colors.orange,
    Colors.purple,
    Colors.pink,
    Colors.teal,
    Colors.indigo,
    Colors.brown,
    Colors.grey,
    Colors.cyan,
    Colors.lime,
    Colors.amber,
  ];
  Color selectedColor = Colors.red;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Container Colors'),
      ),
      body: ListView.builder(
        itemCount: containerColors.length,
        itemBuilder: (context, index) {
          return Container(
            color: containerColors[index],
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(
                  containerColors[index].toString(),
                  style: TextStyle(color: Colors.white),
                ),
                IconButton(
                  icon: Icon(Icons.content_copy),
                  color: Colors.white,
                  onPressed: () {
                    // Logic to copy hex code to clipboard
                  },
                ),
              ],
            ),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.color_lens),
        onPressed: () {
          showDialog(
            context: context,
            builder: (context) {
              return AlertDialog(
                title: Text('Select Color'),
                content: Container(
                  width: double.maxFinite,
                  child: ListView.builder(
                    shrinkWrap: true,
                    itemCount: containerColors.length,
                    itemBuilder: (context, index) {
                      return ListTile(
                        title: Text(containerColors[index].toString()),
                        onTap: () {
                          setState(() {
                            selectedColor = containerColors[index];
                          });
                          Navigator.pop(context);
                        },
                      );
                    },
                  ),
                ),
                actions: [
                  FlatButton(
                    child: Text('Select'),
                    onPressed: () {
                      // Logic to update all container colors and text
                      Navigator.pop(context);
                    },
                  ),
                ],
              );
            },
          );
        },
      ),
    );
  }
}

Tandaan na sa code na ito, wala pa ang aktuwal na pagpapalit ng kulay ng mga container. Ito ay naiwan sa bahagi ng onPressed ng floating button at FlatButton. Kailangan mo pang lagyan ng mga kodigo upang i-update ang mga kulay. Maaari mong gamitin ang setState upang mag-trigger ng pagbabago ng estado ng widget at i-rebuild ang mga container na may iba't ibang mga swatch color.

Ikakopya pa rin nito ang aktoal na kulay ng container sa clipboard kapag napindot ang copy button. Ang code para sa pag-copy ng hex code ay hindi kasama dito, ngunit maaari mong gamitin ang flutter_clipboard package upang makopya ang mga ito.
 

Similar threads

Back
Top