Flutter 위젯 키 💫 🌌 ✨

4131 단어 widgetskeydartflutter

위젯 키


State veElement problemlerinin en kolay çözümünü sunayım: 열쇠.

Koleksiyonlarda widget'larla çalışırken, onlara key vermek, Flutter'n aynı türden iki widget'ın gerçekte ne zaman farklı olduğunu bilmesine yardımcı olur. 그러나 이 도구는 어린이용 위젯을 위한 도구입니다. 당신은 Flutter'a fazladan bir bilgi vermek idealdir에서 당신이 원하는 것을 찾을 수 있을 것입니다.

_buttons = <Widget>[
  FancyButton(
    key: _buttonKeys.first, //Flutter'ın bu widget'ı aynı türdeki widget'lar arasında tanımlamasını sağlayan Unique key 
    child: Text(
      "Decrement",
      style: TextStyle(color: Colors.white),
    ),
    onPressed: _decrementCounter,
  ),
  FancyButton(
    key: _buttonKeys.last,
    child: Text(
      "Increment",
      style: TextStyle(color: Colors.white),
    ),
    onPressed: _incrementCounter,
  ),
];


Anahtar(key) türleri ve bunların ne zaman kullanılacağı:



Flutter da birkaç tür anahtar vardır: ValueKey , ObjectKey , UniqueKey , GlobalKey , ve PageStorageKey ve bir şekilde ilişkilidir.
PageStorageKey , LocalKey 'in bir alt sınıfı olan ValueKey<T> 'nin bir alt sınıfıdır. ValueKey<T> 이세, Key 'in bir alt sınıfıdır ve ObjectKey , UniqueKey ve ayrica LocalKey 나는 uygular.

Key'ler iki gruba ayrılır: 글로벌 및 로컬

글로벌 키

Global anahtarlar, state'i yönetmek ve widget öğelerini widget ağacı çevresinde taşımak için kullanılır. Örneğin, bir checkbox görüntüleyen tek bir widget öğesinde bir GlobalKey'e sahip olabilir ve widget öğesini birden çok sayfada kullanabilirsiniz. 그러나 프레임워크 'e bu widget öğesinin aynı örneğini(instance) kullanmasını söyler. 당신은 체크박스에 체크박스를 두지 않고 다른 방법을 사용할 수 있습니다. 체크박스 A는 보안 유지 B는 보안 유지를 의미합니다.

State'i yönetmek için global anahtarların kullanılmasının tavsiye edilmediğini (Flutter ekibi tarafından) not etmek önemlidir. 글로벌 anahtarlar sık ​​kullanılmaz ve performansı etkiler; 로컬 anahtarları kullanmak daha yaygındır.

로컬 키

로컬 anahtarların tümü, anahtarı oluşturduğunuz build context'e göre kapsamlandırılmış olmaları bakımından benzerdir. Hangisinin kullanılacağına karar vermek, duruma bağlıdır:

ValueKey<T> Değer anahtarları, anahtar eklediğiniz nesne bir tür constant, unique property'e sahip olduğunda en iyisidir. Örneğin, bir todo list uygulamasında, bir todo'yu görüntüleyen her widget'n muhtemelen sabit ve benzersiz (unique) bir Todo.text 나는 바르디르.

ObjectKey Nesne anahtarları, aynı türden ancak property value'ları (özellik değerleri) farklı olan nesneleriniz olduğunda mükemmeldir. Bir e-ticaret uygulamasında "제품"adlı bir nesne düşünün: iki ürün aynı başlığa sahip olabilir (iki farklı satıcı bilgisayar satabilir). Ve bir satıcının birden fazla urünü olabilir. Bir ürünü benzersiz yapan, ürün adı ile satıcı adının birleşimidir.
다음은 ObjectKey'e에 대한 설명입니다(문자 그대로).

Key key = ObjectKey({
    "seller": product.seller,
    "product": product.title
})


UniqueKey Bir koleksiyonun alt öğelerine anahtar ekliyorsanız ve alt öğeler oluşturulana kadar değerlerini bilmiyorsa, unique(benzersiz) anahtarlar kullanılabilir. Örnek uygulamada, ürün kartları oluşturulana kadar renklerini bilmezler, bu nedenle unique key iyi bir seçenektir.

PageStorageKey Bir scroll'un konumu gibi sayfa bilgilerini depolamak için kullanılan özel bir anahtardır.

아니다:
Anahtarların, özellikele global anahtarların kullanılması genellikle gerekli değildir veya önerilmez. Global anahtarlar neredeyse her zaman bir tür global state yönetimi ile değiştirilebilir. 이 시스템은 PageStorageKey에 저장되어 있고 저장 장치가 없습니다.

리소스: Flutter in Action 3장

좋은 웹페이지 즐겨찾기