Secure Text Field
Omuz üstünden okunmaması gerekenler için metin alanı: bir şifre, bir PIN, bir kartın güvenlik kodu.
import com.pantrixui.components.inputs.securetextfield.PantrixSecureTextField
- Gizli metin. Platforma alanın bir şifre tuttuğu söylenir ve metin gizliyken ona metnin yerine noktalar verilir: ekran okuyucu şifreyi okumaz, şifre yöneticisi ise alanı yine doldurur ve kaydeder.
- Gösterme düğmesi. Kutunun sonundaki göz metni gösterir ve yeniden gizler. Fareyle basmak imleci yerinden oynatmaz. Klavyede alandan sonraki kendi Tab durağıdır; klavyenin "İleri" tuşu ise onu atlayıp sonraki alana geçer.
showRevealButton = falsedüğmeyi kaldırır. - Gösterilen metin kaydedilmez. Alan yeniden kurulduğunda, ekran dönünce olduğu gibi, metin yine gizlidir.
- Gizleme biçimi.
textObfuscationModegizli metnin nasıl çizildiğini söyler: platformun yaptığı gibi, son yazılan karakter bir an görünerek, ya da hiçbir şey görünmeden.textObfuscationCharacternoktanın yerine çizilen karakterdir. - Otomatik doldurma.
contentTypeverilmezse alanContentType.Passwordtutar;ContentType.NewPasswordseçilmekte olan bir şifredir. - Metni almak. Metin durumdan okunur: kullanılacağı anda
state.text, yazıldıkça izlemek içinsnapshotFlow. MetniStringolarak tutan bir çağırana her değişiklik o yolla verilir. - Form.
fieldalan biçim değerini, hatasını ve adını formdaki alanından alır. Odak alandan ve düğmelerinden çıkınca alan denetlenir;formverilirse klavyenin eylem tuşu formu gönderir. - Metin alanından gelenler.
label,placeholder,supportingText,error,leadingIcon,showClearButtonvemaxLengthmetin alanındaki gibidir.trailingIcontemizleme ve gösterme düğmelerinden sonra durur. - Otomasyon.
tagKeyile alanSecureTextField_<tagKey>, temizleme düğmesiSecureTextFieldClear_<tagKey>, gösterme düğmesiSecureTextFieldReveal_<tagKey>adını alır. Alan odağı aldığını, temizlendiğini ve metninin gösterilip gizlendiğini bildirir; metnini asla.
Örnekler
En yalın hâli
En az yazılan: bir TextFieldState ve bir etiket. Yazılan nokta nokta çizilir; kesilemez ve kopyalanamaz. Metin durumdadır: alttaki satır password.text'in yalnızca uzunluğunu okur.
Kutunun sonundaki göz düğmesi metni gösterir ve yeniden gizler. Fareyle basmak imleci alandan çıkarmaz. Klavyede Tab alandan sonra düğmeye uğrar; klavyenin "İleri" tuşu ise düğmeyi atlar. Metnin gösterildiği kaydedilmez: alan yeniden kurulduğunda yine gizlidir.
val password = rememberTextFieldState()
PantrixSecureTextField(
state = password,
modifier = Modifier.fillMaxWidth(),
label = "Wi-Fi şifresi",
tagKey = "wifi_password"
)
PantrixText(text = "${password.text.length} karakter yazıldı", color = PantrixTheme.colors.textSecondary)
Gizleme biçimi ve karakteri
textObfuscationMode metnin gizliyken nasıl çizildiğini söyler. Varsayılan System platformun yaptığını yapar: Android'de, sistemin kendi ayarı öyle diyorsa, son yazılan karakter bir an görünür; başka hiçbir yerde bir şey görünmez. RevealLastTyped son yazılan karakteri her platformda bir an gösterir, Hidden hiçbirinde göstermez. İlk iki alana bir şeyler yaz ve farkı gör.
textObfuscationCharacter gizli bir karakterin yerine çizilendir: üçüncü alanda nokta yerine yıldız.
PantrixSecureTextField(
state = rememberTextFieldState(),
modifier = Modifier.fillMaxWidth(),
label = "Son yazılan görünür",
textObfuscationMode = TextObfuscationMode.RevealLastTyped,
tagKey = "reveal_last"
)
PantrixSecureTextField(
state = rememberTextFieldState(),
modifier = Modifier.fillMaxWidth(),
label = "Hiçbir şey görünmez",
textObfuscationMode = TextObfuscationMode.Hidden,
tagKey = "hidden"
)
PantrixSecureTextField(
state = rememberTextFieldState("yildiz"),
modifier = Modifier.fillMaxWidth(),
label = "Nokta yerine yıldız",
textObfuscationCharacter = '*',
tagKey = "stars"
)
Yardım metni ve hata
supportingText kutunun altında durur. error = true kenarlığı, etiketi, yardım metnini ve imleci danger rolüne çevirir ve mesaj ekran okuyucuya hata olarak bildirilir. İki alana farklı şeyler yaz: ikincisi hataya geçer ve neyin yanlış olduğunu söyler.
İki alanın metni de kendi durumundadır; karşılaştırma ikisini oradan okur. İlk alanda yalnızca eylem tuşu verildi: klavyenin "İleri" tuşu göz düğmesinde durmaz, ikinci alana geçer. Klavyenin geri kalanı verilmediği için bir şifreninkidir: şifre klavyesi, düzeltme yok.
val password = rememberTextFieldState()
val repeated = rememberTextFieldState()
val differs = repeated.text.isNotEmpty() && repeated.text.toString() != password.text.toString()
PantrixSecureTextField(
state = password,
modifier = Modifier.fillMaxWidth(),
label = "Hesap şifresi",
supportingText = "Harf ve rakam içersin",
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
contentType = ContentType.NewPassword,
tagKey = "chosen_password"
)
PantrixSecureTextField(
state = repeated,
modifier = Modifier.fillMaxWidth(),
label = "Hesap şifresi (tekrar)",
supportingText = if (differs) "İki şifre aynı değil" else "Aynı şifreyi bir kez daha yazın",
error = differs,
contentType = ContentType.NewPassword,
tagKey = "repeated_password"
)
Temizleme düğmesi, sayaç ve ikon
Kutunun sonunda üç şey yan yana durabilir, hep aynı sırada: temizleme düğmesi, metni gösteren düğme ve trailingIcon. Buradaki ikon şifrenin yeterince uzun olup olmadığını söyler; süs olmadığı için bir contentDescription'ı vardır.
showClearButton alan boş değilken görünür ve imleci alanda bırakır. maxLength = 32 daha uzun bir şifreyi almaz; sayaç kutunun altında, yardım metninin karşısında yazar. placeholder yalnızca alan boşken görünür.
val password = rememberTextFieldState()
val longEnough = password.text.length >= 12
PantrixSecureTextField(
state = password,
modifier = Modifier.fillMaxWidth(),
label = "Ana şifre",
placeholder = "Bir cümle de olabilir",
supportingText = "En az 12 karakter",
trailingIcon = {
PantrixIcon(
imageVector = if (longEnough) PantrixIcons.Success else PantrixIcons.Warning,
contentDescription = if (longEnough) "Yeterince uzun" else "Henüz kısa",
size = PantrixTheme.style(TextFieldStyle).iconSize
)
},
showClearButton = true,
maxLength = 32,
tagKey = "master_password"
)
Forma bağlı bir giriş
field alan PantrixSecureTextField değerini, hatasını ve adını formdaki alanından alır: şifre kısa bırakılıp çıkılırsa kuralın mesajı yardım metninin yerine geçer. Odak göz düğmesine geçince alandan çıkılmış sayılmaz, hata o zaman görünmez. Forma bağlı bir alanın metni formdaki alanın değeridir: ayrıca alınması gerekmez.
form verilen alanda klavyenin eylem tuşu formu "Giriş yap" düğmesi üzerinden gönderir; e-posta alanında "İleri" tuşu odağı şifreye taşır. E-posta bir PantrixTextField'dır: iki bileşen aynı etiketi ve aynı kutuyu çizer.
val snackbars = LocalPantrixSnackbars.current
val scope = rememberCoroutineScope()
val form = rememberFormState()
PantrixTextField(
field = form.field("login_email", initial = "", Rules.matches(EMAIL, "Geçerli bir e-posta adresi yazın")),
modifier = Modifier.fillMaxWidth(),
form = form,
label = "E-posta",
placeholder = "ad@ornek.com",
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email, imeAction = ImeAction.Next),
contentType = ContentType.EmailAddress
)
PantrixSecureTextField(
field = form.field("login_password", initial = "", Rules.minLength(8, "Şifre en az 8 karakter olmalı")),
modifier = Modifier.fillMaxWidth(),
form = form,
label = "Şifre",
supportingText = "En az 8 karakter",
showClearButton = true
)
PantrixButton(
text = "Giriş yap",
onClick = {
scope.launch { form.submit { snackbars?.show(message = "Giriş yapıldı", tagKey = "signed_in") } }
},
form = form,
tagKey = "sign_in"
)
private val EMAIL = Regex("""\S+@\S+\.\S+""")
Metnini bir ViewModel'e taşıyan form
Her alan durumunu rememberTextFieldState ile, ViewModel'in o an tuttuğu değerden kurar; durumdaki metni snapshotFlow ile izler ve her değişikliği ViewModel'e bildirir. Metin alanın durumundan böyle alınır: düz metin alanında da, güvenli alanda da aynı yolla.
ViewModel'deki ilk değer bir kez okunur. Sonrası tek yönlüdür: metin alandan ViewModel'e akar, ViewModel'de yapılan bir değişiklik alana dönmez. Ekran yeniden kurulduğunda ViewModel yerinde kalır ve alanlar onun değeriyle başlar.
Alttaki satır ViewModel'in tuttuğunu gösterir: kullanıcı adını, ve şifrenin kendisini değil uzunluğunu. Düğme de ondan okur: kullanıcı adı ve yeterince uzun bir şifre gelmeden basılamaz.
val viewModel = viewModel(key = "account") { AccountViewModel() }
val snackbars = LocalPantrixSnackbars.current
val scope = rememberCoroutineScope()
val initialUiState = remember(viewModel) { viewModel.uiState.value }
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
val username = rememberTextFieldState(initialUiState.username)
LaunchedEffect(username) {
snapshotFlow { username.text.toString() }.collectLatest { viewModel.updateUsername(it) }
}
PantrixTextField(
state = username,
modifier = Modifier.fillMaxWidth(),
label = "Kullanıcı adı",
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next),
contentType = ContentType.NewUsername,
tagKey = "account_username"
)
val password = rememberTextFieldState(initialUiState.password)
LaunchedEffect(password) {
snapshotFlow { password.text.toString() }.collectLatest { viewModel.updatePassword(it) }
}
PantrixSecureTextField(
state = password,
modifier = Modifier.fillMaxWidth(),
label = "Yeni şifre",
supportingText = "En az 8 karakter",
contentType = ContentType.NewPassword,
tagKey = "account_password"
)
PantrixText(
text = "ViewModel: kullanıcı adı \"${uiState.username}\", şifre ${uiState.password.length} karakter",
style = PantrixTheme.typography.footnote,
color = PantrixTheme.colors.textSecondary,
tagKey = "account_state"
)
PantrixButton(
text = "Hesap oluştur",
onClick = {
scope.launch {
snackbars?.show(message = "${uiState.username} için hesap oluşturuldu", tagKey = "account_created")
}
},
enabled = uiState.isComplete,
tagKey = "create_account"
)
private class AccountViewModel : ViewModel() {
private val state = MutableStateFlow(AccountUiState())
val uiState: StateFlow<AccountUiState> = state.asStateFlow()
fun updateUsername(username: String) {
state.update { it.copy(username = username) }
}
fun updatePassword(password: String) {
state.update { it.copy(password = password) }
}
}
private data class AccountUiState(
val username: String = "",
val password: String = ""
) {
val isComplete: Boolean get() = username.isNotBlank() && password.length >= 8
}
Metnini String olarak veren PIN
Güvenli alanın value ve onValueChange alan bir biçimi yoktur; metnini String olarak tutan bir çağıran için durumun üstüne kurulur. PinInput alanı value ile başlatır, durumdaki metni snapshotFlow ile izler ve her değişikliği onValueChange ile bildirir. Akış tek yönlüdür: value ilk değerdir, sonradan dışarıdan değişirse alana yansımaz. Yardım metni çağıranın tuttuğu String'ten üretilir ve kaç rakamın eksik olduğunu söyler.
Bu bir PIN'dir: showRevealButton = false ile metnini gösteren düğmesi yoktur, TextObfuscationMode.Hidden ile son yazılan rakam da gösterilmez. Klavyesi rakam klavyesidir (KeyboardType.NumberPassword); rakam olmayanı bir giriş dönüşümü geri çevirir.
var pin by remember { mutableStateOf("") }
PinInput(
value = pin,
onValueChange = { pin = it },
label = "PIN",
supportingText = if (pin.length == 6) "PIN tamam" else "${6 - pin.length} rakam daha",
modifier = Modifier.fillMaxWidth()
)
@Composable
private fun PinInput(
value: String,
onValueChange: (String) -> Unit,
label: String,
supportingText: String,
modifier: Modifier = Modifier
) {
val state = rememberTextFieldState(value)
val latestOnValueChange by rememberUpdatedState(onValueChange)
LaunchedEffect(state) {
snapshotFlow { state.text.toString() }.collect { latestOnValueChange(it) }
}
PantrixSecureTextField(
state = state,
modifier = modifier,
label = label,
supportingText = supportingText,
showRevealButton = false,
maxLength = 6,
textObfuscationMode = TextObfuscationMode.Hidden,
keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.NumberPassword),
inputTransformation = DigitsOnly,
tagKey = "pin"
)
}
private val DigitsOnly = InputTransformation {
if (!asCharSequence().all(Char::isDigit)) revertAllChanges()
}
Devre dışı ve salt okunur
enabled = false alan odak almaz, temanın devre dışı renkleriyle çizilir ve metnini gösteren düğmesi yoktur.
readOnly = true alan odaklanır ve metni düğmeyle gösterilebilir, ama değiştirilemez: bir kez verilen bir kurtarma kodu gibi.
PantrixSecureTextField(
state = rememberTextFieldState("degismez"),
modifier = Modifier.fillMaxWidth(),
enabled = false,
label = "Devre dışı",
supportingText = "Metnini gösteren düğmesi yoktur",
tagKey = "locked_password"
)
PantrixSecureTextField(
state = rememberTextFieldState("PX-4821-9930"),
modifier = Modifier.fillMaxWidth(),
readOnly = true,
label = "Kurtarma kodu",
supportingText = "Salt okunur: gösterilebilir, değiştirilemez",
tagKey = "recovery_code"
)
Kendi renkleri ve stili
Güvenli alanın kendi stil ve renk sınıfı yoktur: PantrixTextField'ın TextFieldColors'ını ve TextFieldStyle'ını alır. Temada metin alanlarını yeniden biçimleyen bir ürün şifre alanlarını da biçimlemiş olur.
İlk alanda odaktaki kenarlık, imleç ve ikon rengi uygulamanın kendi morudur: göz düğmesi de ikon rengiyle çizilir. Verilmeyen renkler temadaki rolünde kalır. İkincinin kutusu tam yuvarlaktır: TextFieldStyle(shape = ShapeRole.Full).
val own = ownColors()
PantrixSecureTextField(
state = rememberTextFieldState(),
modifier = Modifier.fillMaxWidth(),
label = "Cüzdan şifresi",
colors = TextFieldColors(focusedBorder = own.color, icon = own.color, cursor = own.color),
tagKey = "own_colors"
)
PantrixSecureTextField(
state = rememberTextFieldState(),
modifier = Modifier.fillMaxWidth(),
label = "Kasa şifresi",
style = TextFieldStyle(shape = ShapeRole.Full),
tagKey = "pill"
)
API
state
Omuz üstünden okunmaması gerekenler için metin alanı: bir şifre, bir PIN, bir kartın güvenlik kodu.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
state | TextFieldState | Metin ve seçim. rememberTextFieldState() ile kurulur ve yazılan ondan okunur: metnin kullanıldığı yerde state.text, değiştikçe izlemek için snapshotFlow { state.text.toString() }. | |
modifier | Modifier | Modifier | Alanın bütününün modifier'ı: etiketinin, kutusunun ve kutunun altındakilerin. fillMaxWidth() kutuyu üst öğesi kadar geniş yapar. |
enabled | Boolean | true | Alana yazılıp yazılamayacağı. Yazılamayan alan odak almaz, devre dışı renklerle çizilir, metnini gösteren düğmesi yoktur ve devre dışı olduğunu söyler. |
readOnly | Boolean | false | Metnin salt okunur olup olmadığı: alan yine odaklanabilir ve metni düğmeyle gösterilebilir. |
label | String? | null | Alanın ne için olduğu. Kutunun üstünde yazar ve ekran okuyucu için alanın adıdır. |
placeholder | String? | null | Kutu boşken içinde gösterilir. Etiket değildir: kullanıcı yazmaya başlar başlamaz kaybolur. |
supportingText | String? | null | Kutunun altındaki yardım metni, daha küçük bir yazıyla. error ile birlikte neyin düzeltileceğini söyleyen mesajdır ve ekran okuyucu onu hata olarak duyurur. |
error | Boolean | false | Metnin yanlış olup olmadığı: kenarlık, etiket, yardım metni ve imleç danger rolüne döner ve ekran okuyucuya bildirilir. |
leadingIcon | (@Composable () -> Unit)? | null | Metnin önünde durur ve ikincil yazı rengindedir. Yuva içine konanı boyutlandırmaz: PantrixIcon(size = PantrixTheme.style(TextFieldStyle).iconSize) platformun boyutundadır. |
trailingIcon | (@Composable () -> Unit)? | null | Metnin arkasında durur: temizleme düğmesinin ve metni gösteren düğmenin de arkasında. |
showClearButton | Boolean | false | Alana yazılabildiği ve alan boş olmadığı sürece, alanı boşaltan bir düğme gösterir. Düğme imleci alanda bırakır ve Tab durağı değildir. |
showRevealButton | Boolean | true | Alan etkinken, metni gösterip yeniden gizleyen düğmeyi gösterir. Düğme olmadan metin textObfuscationMode'un çizdiği gibi kalır: bu, hiç gösterilmeyecek bir metin ve metni başka bir yolla gösteren bir çağıran içindir. |
maxLength | Int? | null | Kullanıcının girebileceği en çok karakter sayısı: karakterler String.length'in saydığı gibi sayılır. Sınırı aşacak bir değişiklik bütünüyle geri çevrilir. Kodla verilen metin kesilmez ve kullanıcı onu yine kısaltabilir. Pozitif olmalıdır. |
showCharacterCount | Boolean | true | maxLength verilmişken kutunun altında count/maxLength gösterir. |
textObfuscationMode | TextObfuscationMode | TextObfuscationMode.System | Metnin gizliyken nasıl çizildiği. TextObfuscationMode.System platformun yaptığını yapar: Android'de, sistemin kendi ayarı öyle diyorsa, son yazılan karakter bir an görünür, başka hiçbir yerde bir şey görünmez. Hidden hiçbir platformda bir şey göstermez, RevealLastTyped ise son yazılan karakteri her platformda gösterir. |
textObfuscationCharacter | Char | '•' | Gizli bir karakterin yerine çizilen karakter. |
keyboardOptions | KeyboardOptions | KeyboardOptions.Default | Klavyenin türü, büyük harfleri, düzeltmeleri ve eylem tuşu. Bunların söylemedikleri bir şifreninkidir: şifre klavyesi, düzeltme yok. Böylece bir eylem adlandırmak, yazılanı öğrenen bir klavyeyi geri getirmez. KeyboardType.NumberPassword bir PIN'inkidir. |
onKeyboardAction | KeyboardActionHandler? | null | Klavyenin eylem tuşuna basılınca, keyboardOptions'ın adlandırdığı eylem için çağrılır. Null verilirse platformun yaptığı kalır: Next odağı ilerletir, Done klavyeyi kapatır. |
inputTransformation | InputTransformation? | null | Kullanıcı yazarken metne yapılan işlem. maxLength ile birlikte önce bu çalışır ve sınır onun geçirdiğine uygulanır. |
contentType | ContentType? | null | Platforma alanın ne tuttuğunu söyler, alanı o doldurabilsin diye. Verilmezse alan ContentType.Password tutar, Foundation'ın güvenli alanının kendisi için söylediği gibi. ContentType.NewPassword ise seçilmekte olan bir şifredir. |
style | TextFieldStyle? | null | Bu çağrının kendi stili: çevresindeki her stili ezer, yoğunluk ona da uygulanır. Yalnızca verdiği alanlar değişir ve her platformda değişir. |
colors | TextFieldColors? | null | Bu çağrının kendi renkleri, temanın rollerinin yerine: verilenler kullanılır, gerisi temanın renklerinde kalır. Devre dışı bir alan, ne verilirse verilsin temanın devre dışı renkleriyle çizilir. |
contentDescription | String? | null | Ekran okuyucunun alan için söylediği: label verilmeyen alanın adıdır. Aynı şeyi söyleyen bir placeholder o zaman yalnızca göze kalır, ekran okuyucuya okunmaz. |
tagKey | String? | null | Alanın otomasyon anahtarı: alan SecureTextField_<tagKey>, temizleme düğmesi SecureTextFieldClear_<tagKey>, metnini gösteren düğme SecureTextFieldReveal_<tagKey> diye etiketlenir. Alan odağı aldığını, temizlendiğini ve metninin gösterildiğini ya da gizlendiğini bildirir, metnini asla. |
interactionSource | MutableInteractionSource? | null | Alanın dışarı taşınan etkileşimleri: odağı, üstündeki fare ve basışları. Null verilirse alan kendi kaynağını tutar. |
field
Bir formun alanına bağlı güvenli metin alanı: metni, hatası ve adı field'dan gelir.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
field | FormField<String> | Metin alanının gösterdiği ve değiştirdiği form alanı. | |
modifier | Modifier | Modifier | Alanın bütününün modifier'ı. |
form | FormState? | null | Verilirse klavyenin eylem tuşu formu, forma kayıtlı düğme üzerinden gönderir. Next ya da Previous eylemi odağı her zamanki gibi taşır. Eylem adlandırmayan bir alan ImeAction.Done alır, çünkü varsayılan eylem hiçbir işleyiciye ulaşmaz. Çağıranın kendi onKeyboardAction'ı gönderimin yerine geçer. |
enabled | Boolean | true | Alana yazılıp yazılamayacağı. |
readOnly | Boolean | false | Metnin salt okunur olup olmadığı. |
label | String? | null | Alanın ne için olduğu. Kutunun üstünde yazar ve ekran okuyucu için alanın adıdır. |
placeholder | String? | null | Kutu boşken içinde gösterilir. |
supportingText | String? | null | Kutunun altındaki yardım metni: alanın orada gösterecek bir hatası olmadığı sürece. |
leadingIcon | (@Composable () -> Unit)? | null | Metnin önünde durur. |
trailingIcon | (@Composable () -> Unit)? | null | Metnin arkasında durur: temizleme düğmesinin ve metni gösteren düğmenin de arkasında. |
showClearButton | Boolean | false | Alana yazılabildiği ve alan boş olmadığı sürece, alanı boşaltan bir düğme gösterir. |
showRevealButton | Boolean | true | Alan etkinken, metni gösterip yeniden gizleyen düğmeyi gösterir. |
maxLength | Int? | null | Kullanıcının girebileceği en çok karakter sayısı. Pozitif olmalıdır. |
showCharacterCount | Boolean | true | maxLength verilmişken kutunun altında count/maxLength gösterir. |
textObfuscationMode | TextObfuscationMode | TextObfuscationMode.System | Metnin gizliyken nasıl çizildiği. |
textObfuscationCharacter | Char | '•' | Gizli bir karakterin yerine çizilen karakter. |
keyboardOptions | KeyboardOptions | KeyboardOptions.Default | Klavyenin türü, büyük harfleri, düzeltmeleri ve eylem tuşu. Bunların söylemedikleri bir şifreninkidir. |
onKeyboardAction | KeyboardActionHandler? | null | Klavyenin eylem tuşuna basılınca, formun gönderimi yerine çağrılır. |
inputTransformation | InputTransformation? | null | Kullanıcı yazarken metne yapılan işlem. |
contentType | ContentType? | null | Platforma alanın ne tuttuğunu söyler, alanı o doldurabilsin diye. Verilmezse ContentType.Password olur. |
style | TextFieldStyle? | null | Bu çağrının kendi stili: çevresindeki her stili ezer, yoğunluk ona da uygulanır. Yalnızca verdiği alanlar değişir ve her platformda değişir. |
colors | TextFieldColors? | null | Bu çağrının kendi renkleri, temanın rollerinin yerine: verilenler kullanılır, gerisi temanın renklerinde kalır. Devre dışı bir alan, ne verilirse verilsin temanın devre dışı renkleriyle çizilir. |
contentDescription | String? | null | label verilmeyen alan için ekran okuyucunun söylediği. |
interactionSource | MutableInteractionSource? | null | Alanın dışarı taşınan etkileşimleri. Null verilirse alan kendi kaynağını tutar. |
TextFieldStyle
PantrixTextField'ın kutusu: şekli, en az yüksekliği ve genişliği, metninin çevresindeki boşluk, ikonları ve kenarlığı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
shape | ShapeSpec | ShapeSpec.Unspecified | Kutunun şekli. Tam yuvarlak bir şekil, ShapeRole.Full, yalnızca alan tek satır tutarken bir haptır: birkaç satırlı bir alan onun yerine ShapeRole.Large alır, çünkü bir kapsülün eğrisi metninin ilk satırına girer. |
height | Dp | Dp.Unspecified | Kutunun en az yüksekliği. |
minWidth | Dp | Dp.Unspecified | Kutunun en az genişliği: boş bir alanın, kullanıcı içine yazdıkça genişlemesini önler. |
horizontalPadding | Dp | Dp.Unspecified | İkon olmayan yerde, kutunun kenarı ile metni arasındaki boşluk. |
verticalPadding | Dp | Dp.Unspecified | Metnin ilk satırının üstündeki ve son satırının altındaki boşluk. |
iconPadding | Dp | Dp.Unspecified | Yuvasındaki bir ikonun çevresindeki boşluk. |
iconSize | Dp | Dp.Unspecified | Yuvadaki bir ikonun alması gereken boyut. Yuva, içine konanı boyutlandırmaz. |
borderWidth | Dp | Dp.Unspecified | Kutunun kenarlığının kalınlığı. |
focusedBorderWidth | Dp | Dp.Unspecified | Alan odaktayken kenarlığın kalınlığı: odağı gösteren kenarlıktır. |
textRole | TypeRole? | null | Metnin yazıldığı, yer tutucunun da yazıldığı yazı ölçeği rolü: Android'de ve iOS'ta body, 16sp, Material 3'ün ve iOS'un bir alana yazdığı gibi; masaüstünde ve web'de label, 14sp, işaretçiyle kullanılan bir sayfadaki gibi. Bir select'in kutusu ve bu stille kurulan alanlar da onu alır. |
TextFieldColors
Temanın renklerini almayan bir alan için PantrixTextField'ın boyandığı renkler: verilen renk kullanılır, verilmeyen temadaki rolünde kalır. Bir ürün yalnızca değiştirdiği renkleri verir, başkasını vermez:
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
container | Color | Color.Unspecified | Kutunun dolgusu. Temanın surface rengi. |
border | Color | Color.Unspecified | Dinlenirken kutunun kenarlığı. Temanın border rengi. |
hoveredBorder | Color | Color.Unspecified | Fare üstündeyken kenarlık. Temanın borderHover rengi: border'dan bir basamak güçlüsü. |
focusedBorder | Color | Color.Unspecified | Alan odaktayken kenarlık. Temanın primary rengi. |
error | Color | Color.Unspecified | Metnin yanlış olduğunu söyleyenler: kenarlık, etiket, kutunun altındaki mesaj, imleç ve sınırını aştığında sayaç. Temanın danger rengi. |
text | Color | Color.Unspecified | Yazılan metin. Temanın textPrimary rengi. |
label | Color | Color.Unspecified | Kutunun üstündeki etiket. Verilmezse, alanın durduğu yerde herhangi bir metin nasıl çiziliyorsa öyle çizilir, çünkü etiket kutunun dışında, alan neyin üstüne konmuşsa onun üstündedir: temanın kendi zemininde textPrimary ile, bir dolgunun üstünde o dolgunun içerik rengiyle. |
placeholder | Color | Color.Unspecified | Yer tutucu. Temanın textSecondary rengi. |
supportingText | Color | Color.Unspecified | Kutunun altındaki yardım metni ve sayaç. Temanın textSecondary rengi. |
icon | Color | Color.Unspecified | Yuvadaki bir ikonun, kendi rengini vermedikçe çizildiği renk ve temizleme düğmesinin çarpısı. Temanın textSecondary rengi. |
cursor | Color | Color.Unspecified | İmleç ve onunla birlikte bir seçimin tutamaçları ile zemini. Temanın primary rengi. |
scrollBar | Color | Color.Unspecified | Birkaç satırlı bir kutunun metninin ne kadar kaydığını gösteren çubuk. Temanın borderStrong'u: metnin yanında bir işarettir ve kutunun yumuşak kenarı orada görünmezdi. |
Erişilebilirlik
- Klavye.
keyboardOptions'ın söylemedikleri bir şifreninkidir: şifre klavyesi, düzeltme yok. Yalnızca bir eylem tuşu adlandırmak, yazılanı öğrenen klavyeyi geri getirmez.KeyboardType.NumberPasswordbir PIN'inkidir.