Flutter - y/x линия оси появляется в диалоговом окне «Цветочный пикер»Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Flutter - y/x линия оси появляется в диалоговом окне «Цветочный пикер»

Сообщение Anonymous »

y/x Line
Привет, хотел бы получить некоторую помощь по этим вопросам, у меня есть плагин, который Flutter_colorpicker: ^1.1.0 в Flutter. Но не уверен, почему диалог, по -видимому, имеет линию оси y/x.
// ignore_for_file: use_build_context_synchronously

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

class ColorPickerField extends StatefulWidget {
final TextEditingController controller;
final String label;
final String defaultColor;
final Function(String) onColorChanged;

const ColorPickerField({
super.key,
required this.controller,
required this.label,
required this.defaultColor,
required this.onColorChanged,
});

@override
State createState() => _ColorPickerFieldState();
}

class _ColorPickerFieldState extends State {
Color _currentColor = Colors.black;

@override
void initState() {
super.initState();
_currentColor = _parseColor(widget.controller.text);
widget.controller.addListener(_updateColorFromController);
}

@override
void dispose() {
widget.controller.removeListener(_updateColorFromController);
super.dispose();
}

void _updateColorFromController() {
final newColor = _parseColor(widget.controller.text);
if (_currentColor != newColor) {
setState(() {
_currentColor = newColor;
});
}
}

void _showColorPicker(BuildContext context) {
Color pickerColor = _currentColor;

showDialog(
context: context,
builder: (BuildContext dialogContext) {
return AlertDialog(
title: Text('Pick ${widget.label}'),
content: SingleChildScrollView(
child: ColorPicker(
pickerColor: pickerColor,
onColorChanged: (Color color) {
pickerColor = color;
},
pickerAreaHeightPercent: 0.8,
enableAlpha: false,
displayThumbColor: true,
hexInputBar: true,
labelTypes: const [ColorLabelType.hex],
),
),
actions: [
TextButton(
child: const Text('Cancel'),
onPressed: () {
Navigator.of(dialogContext).pop();
},
),
ElevatedButton(
child: const Text('Select'),
onPressed: () {
Navigator.of(dialogContext).pop();

// Convert color to hex format
final colorString =
'#${pickerColor.value.toRadixString(16).substring(2, 8).toUpperCase()}';

// Update controller text and trigger controller listener
widget.controller.text = colorString;

// Update local state for immediate UI refresh
setState(() {
_currentColor = pickerColor;
});

// Call the onColorChanged callback to update parent
widget.onColorChanged(colorString);
},
),
],
);
},
);
}

Color _parseColor(String colorString) {
try {
if (colorString.startsWith('#')) {
return Color(int.parse('FF${colorString.substring(1)}', radix: 16));
}
return Color(
int.parse('FF${widget.defaultColor.replaceAll("#", "")}', radix: 16),
);
} catch (e) {
return const Color(0xFF000000);
}
}

@override
Widget build(BuildContext context) {
return TextField(
controller: widget.controller,
readOnly: true,
onTap: () {
_showColorPicker(context);
},
decoration: InputDecoration(
labelText: widget.label,
border: const OutlineInputBorder(),
filled: true,
fillColor: Colors.white,
prefixIcon: Icon(
Icons.color_lens,
color: _currentColor,
),
suffixIcon: Container(
margin: const EdgeInsets.all(8),
width: 24,
height: 24,
decoration: BoxDecoration(
color: _currentColor,
border: Border.all(color: Colors.grey),
borderRadius: BorderRadius.circular(4),
),
),
),
);
}
}

< /code>
Я пробовал много способов, но это не работает. Я никогда не включаю варианты разработчика, которые являются «показывающими кранами» и «местоположение указателя».

Подробнее здесь: https://stackoverflow.com/questions/797 ... ker-dialog
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»