Вы можете получить высоту экрана и поделить на количество текстовых полей, проверьте этот код:
@override
Widget build(BuildContext context) {
final numberOfTextFields = 5;
final sizePerItem = MediaQuery.of(context).size.height / numberOfTextFields;
return SafeArea(
child: Scaffold(
resizeToAvoidBottomPadding: true,
body: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: List.generate(
numberOfTextFields,
(index) => SizedBox(
height: sizePerItem,
child: TextField(
decoration: InputDecoration(
contentPadding: EdgeInsets.all(sizePerItem / 2),
hintText: "$index",
),
),
),
).toList(),
),
)),
);
}
Это необходимо конкретно в бобовой модели платформы Java, но это не обязательно в целом.
У Вас может быть метод set без аргумента, когда они предназначены к "swith" значение.
void setCheck()
мог, например, быть предназначен для установки атрибута булевской переменной "проверки" на истинный.
Таким образом, даже если это не "метод set" в бобовом смысле термина Java, можно вообразить метод set используемым для других целей.
Плюс, согласно разделу 7 из спецификаций JavaBean, метод set может иметь больше чем один аргумент, например, для Индексируемых свойств (Индексируемое свойство поддерживает диапазон значений. Каждый раз, когда свойство считано или записано Вы, просто указывают индекс для идентификации, какое значение Вы хотите.)
void setter(int index, PropertyType value); // indexed setter
void setter(PropertyType values[]); // array setter
В Вашем случае допустимый подход должен был бы добавить исключение на этапе выполнения к подписи нашей функции.
Тем путем Вы не помещаете ненужной проверки исключения времени компиляции все другие классы, которые уже называют Ваш метод set.
Или Вы могли рассмотреть свое свойство как свойство Constrained и добавить неисключение на этапе выполнения.
Ограниченные методы установщика свойства требуются, чтобы поддерживать PropertyVetoException. Это документирует пользователям ограниченного свойства, которое попыталось, на обновления можно наложить вето. Таким образом, простое ограниченное свойство могло бы быть похожим:
PropertyType getFoo();
void setFoo(PropertyType value) throws PropertyVetoException;
который позволяет, чтобы VetoableChangeListener был добавлен в случае необходимости.
Относительно Вашего отрывка это "допустимо", но не может быть оптимально потому что (как сказано в этом вопросе):
Почему нет. Проверка и проверка входа являются хорошим вариантом для включения в метод set. Вопрос здесь, если Вы хотите позволить устанавливать участника без проверки.
Возможно Вам нужна стандартная форма метода set для некоторой платформы, которую Вы используете (использование в качестве боба). Но если Вы не ограничиваетесь таким образом, Вы могли бы попробовать это.
Вы могли также использовать, утверждает в методе set, если Вы думаете, что другой код должен сделать проверку, но неправильные значения никогда не должны устанавливать.
В книге "Эффективный Java 2-й Выпуск" Joshua Bloch (ISBN-13: 978-0-321-35668-0) saids, который лучше использовать шаблон разработчика, чем бобовая конвенция для созданий объектов.
Например (шаблон компонентов):
NutritionFacts cocaCola = new NutritionFacts();
cocaCola.setServingSize(240);
cocaCola.setServings(8);
cocaCola.setCalories(100);
cocaCola.setSodium(35);
cocaCola.setCarbohydrate(27);
Использование с шаблоном разработчика:
NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).
calories(100).
sodium(35).
carbohydrate(27).
build();
Реализация шаблона разработчика:
// Builder Pattern
public class NutritionFacts {
private final int servingSize;
private final int servings;
private final int calories;
private final int fat;
private final int sodium;
private final int carbohydrate;
public static class Builder {
// Required parameters
private final int servingSize;
private final int servings;
// Optional parameters - initialized to default values
private int calories = 0;
private int fat = 0;
private int carbohydrate = 0;
private int sodium = 0;
public Builder(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int val)
{ calories = val; return this; }
public Builder fat(int val)
{ fat = val; return this; }
public Builder carbohydrate(int val)
{ carbohydrate = val; return this; }
public Builder sodium(int val)
{ sodium = val; return this; }
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
private NutritionFacts(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
}
Когда первые две площади аргументов потребовали.
Для проверки можно использовать раннюю проверку (в каждом <field>
метод) или ленивая проверка (в сборке () метод). И формат является видом инициализации значения ключа Python.
Java Бобовый метод set спецификации имеют один аргумент. Если Вы добавляете другой по любой причине, это больше не считают методом set.
Метод set совершенно допустим, чтобы "очистить" его аргумент или выдать исключение, если недопустимо.