#flutter #dart
Вопрос:
Я все еще относительно новичок в кодировании и только еще изучаю dart. Я сделал несколько одинаковых кнопок с помощью классов, как мне настроить каждую кнопку индивидуально, пожалуйста, можете ли вы помочь. Вот код: Код кнопки:
class JeffButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 9.0, 0.0, 0.0),
child: TextButton.icon(
onPressed: () => {},
icon: Column(
children: [
Icon(
Icons.add,
color: Colors.white,
size: 85,
),
Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
'Label',
style: TextStyle(
color: Colors.white,
),
),
),
],
),
label: Text(
'', //'Label',
style: TextStyle(
color: Colors.white,
),
),
),
);
}
}
Другой Код:
class home_buttons {
List<Widget> jeffButtons = [
JeffButton(),
JeffButton(),
JeffButton(),
JeffButton(),
JeffButton(),
JeffButton(),
];
}
Комментарии:
1. Вы можете передавать свойства через конструктор класса.
Ответ №1:
Вам понадобятся свойства в вашем классе — таким образом, при создании экземпляров кнопки вы можете передавать конструктору разные значения в качестве аргументов, и эти разные значения можно использовать для настройки каждого экземпляра кнопки.
Так, например, если вы хотите настроить метку заголовка, присвойте title
свойству класса:
class JeffButton extends StatelessWidget {
final String title;
JeffButton({required this.title});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.fromLTRB(0.0, 9.0, 0.0, 0.0),
child: TextButton.icon(
onPressed: () => {},
label: Text(
title, // Use the title property to set the label text,
style: TextStyle(
color: Colors.white,
),
),
),
);
}
}
Затем вы можете установить разные названия для каждой кнопки:
final continueButton = JeffButton(title: 'Continue');
final cancelButton = JeffButton(title: 'Cancel');
Ответ №2:
Вы можете создавать конструкторы, вот пример заполнения.
class JeffButton extends StatelessWidget {
EdgeInsetsGeometry padding;
JeffButton({this.padding = EdgeInsets.all(8)});
@override
Widget build(BuildContext context) {
return Padding(
padding: padding,
);
}
}
Вы можете использовать его как:
JeffButton(padding: EdgeInsets.all(10));