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
Flutter - y/x линия оси появляется в диалоговом окне «Цветочный пикер» ⇐ Android
Форум для тех, кто программирует под Android
1759751660
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>
Я пробовал много способов, но это не работает. Я никогда не включаю варианты разработчика, которые являются «показывающими кранами» и «местоположение указателя».
Подробнее здесь: [url]https://stackoverflow.com/questions/79783653/flutter-y-x-axis-line-appear-on-colorpicker-dialog[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия