Sobes.tech
Middle

Дар кадом ҳолатҳо дар Flutter калидҳо истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Ключҳо барои муайян кардани widgetҳо ва унсурҳо дар дарахти widget-ҳои Flutter истифода мешаванд. Ин барои:

  • Навсозии widgetҳо: Flutter аз клучҳо истифода мебарад, то муайян кунад, ки оё бояд widget-ро дубора сохта ё танҳо нусхаи мавҷудаи онро навсозӣ кунад. Агар клучи widget тағйир наёбад ва маълумотҳои он нав карда шаванд, Flutter унсури мавҷударо дубора истифода мебарад ва навсозӣ мекунад, ба ҷои он ки нав созад.
  • Ҳифзи ҳолат: Ключҳо имкон медиҳанд, ки ҳолати widget-ҳоро ҳангоми интиқол додан дар дарахти widget ё тағйир додани тартиби унсурҳои кӯдакии дар рӯйхат нигоҳ дошта шавад.
  • Самаранокӣ: Истифодаи клучҳо ба Flutter кӯмак мекунад, ки равандро оптимизатсия кунад ва аз навсозии нолозимӣ ҷилавгирӣ кунад.

Маҳз намудҳои гуногуни клучҳо мавҷуданд:

  • LocalKey: Класи асосӣ барои клучҳо, ки дар дохили widget-ҳои падарӣ беназир мебошанд.
    • ValueKey<T>: Ба истифодаи арзиши мушаххас (String, int, ва ғайра) ҳамчун шенасоии беназир истифода мешавад.
    • ObjectKey: Ба истифодаи истинод ба объект ҳамчун шенасоии беназир истифода мешавад.
  • GlobalKey: Ключҳои глобалӣ, ки дар тамоми барнома беназир мебошанд. Инҳо барои дастрасӣ ба ҳолати widget аз ҳар ҷо ё нигоҳ доштани ҳолати widget ҳангоми интиқол ба экранҳои дигар истифода мешаванд.
    • GlobalKey<T extends State<StatefulWidget>>: Барои дастрасӣ ба ҳолати StatefulWidget.
    • GlobalKey: Барои шенасоии глобалӣ дигар.

Масалан, истифодаи ValueKey дар ListView барои нигоҳ доштани ҳолати унсурҳои рӯйхат:

ListView.builder(
  itemCount: items.length,
  itemBuilder: (context, index) {
    final item = items[index];
    return Dismissible(
      key: ValueKey(item.id), // Ключи беназир барои ҳар унсур
      onDismissed: (direction) {
        // Ҳаросати унсур
      },
      child: ListTile(title: Text(item.name)),
    );
  },
);