Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
3.9 kB
3
Indexable
Never
import "package:flutter/material.dart";

class Klavye extends StatefulWidget {
  final Function(String) onTextInput;
  final Function onDelete;
  final Function onDone;
  final Color background1;
  final Color background2;
  const Klavye({
    super.key,
    required this.onTextInput,
    required this.onDelete,
    required this.onDone,
    required this.background1,
    required this.background2,
  });

  @override
  State<Klavye> createState() => _KlavyeState();
}

class _KlavyeState extends State<Klavye> {
  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        gradient: LinearGradient(
          colors: [
            widget.background1,
            widget.background2,
          ],
          begin: Alignment.topLeft,
          end: Alignment.bottomRight,
        ),
      ),
      padding: const EdgeInsets.only(bottom: 15),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          buildRow(
            ['Q', 'W', 'E', 'R', 'T', 'Y', "U", "ı", "O", "P", "Ğ", "Ü"],
          ),
          buildRow(
            ['A', 'S', 'D', 'F', 'G', 'H', 'J', "K", "L", "Ş", "i"],
          ),
          buildRow(
            ['Z', 'X', 'C', 'V', 'B', 'N', 'M', "Ö", "Ç", "SİL"],
            isDeleteRow: true,
          ),
        ],
      ),
    );
  }

  Widget buildRow(
    List<String> keys, {
    MainAxisSize mainAxisSize = MainAxisSize.min,
    bool isDeleteRow = false,
  }) {
    final size = MediaQuery.of(context).size;
    double harfGenislik = size.width / 12;

    return Container(
      decoration: BoxDecoration(
        gradient: LinearGradient(
          colors: [
            widget.background1,
            widget.background2,
          ],
          begin: Alignment.topLeft,
          end: Alignment.bottomRight,
        ),
      ),
      width: isDeleteRow
          ? (keys.length * harfGenislik * 2)
          : keys.length * harfGenislik,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.center,
        mainAxisSize: mainAxisSize,
        children: keys.map((String key) {
          return Flexible(
            child: InkWell(
              onTap: () {
                if (key == 'Tamam') {
                  widget.onDone();
                } else if (key == 'SİL') {
                  widget.onDelete();
                } else {
                  widget.onTextInput(key);
                }
              },
              child: Card(
                elevation: 2.0,
                margin: const EdgeInsets.symmetric(vertical: 4, horizontal: 1),
                child: Container(
                  alignment: Alignment.center,
                  height: harfGenislik + 13,
                  width: (key == 'SİL') ? (harfGenislik * 3) : harfGenislik,
                  decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(10),
                    color: Colors.white,
                  ),
                  child: Container(
                    alignment: Alignment.center,
                    height: harfGenislik + 13,
                    width: (key == 'SİL') ? (harfGenislik * 3) : harfGenislik,
                    child: key == 'SİL'
                        ? Icon(
                            Icons.backspace_outlined,
                            size: 18,
                            color: Colors.orange.shade600,
                          )
                        : Text(
                            key,
                            textAlign: TextAlign.center,
                            style: const TextStyle(
                              fontSize: 18.0,
                              fontWeight: FontWeight.bold,
                            ),
                          ),
                  ),
                ),
              ),
            ),
          );
        }).toList(),
      ),
    );
  }
}
Leave a Comment