제공자 ile Çalışmak 💫 🌌 ✨
Provider paketi, state yönetimi için kullanılan InheritedWIdget çevresinde bir wrapper'dır(sarmalayıcıdır).
제공자 파일, 위젯은 상태 개체(두럼 네시)에 포함되어 있습니다.
공급자 ayrıca, verilerle başlatarak ve 위젯 ağacından kaldırıldıklarında onlardan sonra temizleyerek state nesnelerinin yaşam süresinin yönetilmesine yardımcı olur.
Provider, BLoC bileşenlerini uygulamak için bile kullanılabilir veya diğer state yönetimi çözümlerinin temeli olarak hizmet edebilir!
기본 설정, Verileri widget'lara geçirmek için süslü bir terim olan dependency injection Için Kullanılabilir.
플러그인(eklenti)
Flutter 프로젝트 provider eklentisini ekleyerek başlayalım.
pubspec.yaml dosyanıza gidin ve cupertino_icons eklentisini (플러그인) arayın. Bunun altına, uygulamanız için ihtiyaç duyacağınız eklentileri ekleyebilirsiniz. 공급자 paketini de buraya ekleyelim.
cupertino_icons: ^1.0.4
provider: ^6.0.2
Bu yapıldıktan sonra pub get komutunu çalıştırın. Android Studio kullanıyorsanız, sağ üst köşede Pub get seçeneğini goreceksiniz. VS Code'u kullanırsanız, dosyayı kaydederseniz komut otomatik olarak çalışır.
ChangeNotifier 에클레메
공급자는 프로젝트를 완료할 수 있도록 지원합니다. Verileri tüketmeye başlamadan önce bir ChangeNotifier uygulamamız gerekiyor. Bu, Kişi listemize bir şey eklendiğinde, güncellendiğinde veya kaldırıldığında verileri tüketen tüm widget'lara bildirir.
lib içinde provider adında eni bir klasör olusturuyoruz ve bunun içinde contact-provider.dart adında bir dosya olusturuyoruz.
import '../model/contact.dart';
import 'package:flutter/material.dart';
class ContactProvider extends ChangeNotifier {
List<Contact> _contactList = [];
List<Contact> get contacts {
return [..._contactList];
}
set contacts(List<Contact> newContacts) {
_contactList = newContacts;
notifyListeners();
}
void addContact(Contact newContact) {
_contactList.add(newContact);
notifyListeners();
}
void removeContact(int index) {
_contactList.removeAt(index);
notifyListeners();
}
Başlangıç olarak, ContactProvider 및 ChangeNotifier 확장하기 Bu, uygulamamızdaki verileri güncellemek için kullanacağımız notifyListeners() yöntemine erişmemizi sağlar.
Bir getter ve setter kullanılarak erişilebilen özel bir kişi listemiz _contactList var. addContact() 및 removeContact() yöntemlerimiz var. 그녀의 이미지를 확인하세요. 알림을 받을 수 있습니다.
Bu yapıldıktan sonra, main.dart dosyamıza gidiyoruz ve MaterialApp'imiz bir MultiProvider() widget'ına sarıyoruz. MultiProvider'da, Uygulama içinde Kullanmak istediğimiz tüm provider'ların bir listesini beyan ederiz.
main.dart dosyamız şöyle gorünmelidir:
import 'package:contacts_app/provider/contact-provider.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'contacts-page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider.value(value: ContactProvider()),
],
child: MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.purple,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: ContactsPage(),
),
);
}
}
Provider'ı 쿨란막
Artık change listener kurulumumuzu yaptığımıza gore, contact-page.dart dosyasına geri dönelim. Kişiler listesini aldığımızda provider'ı güncelleyebilmemiz için _getContacts() yöntemini değiştiiriz .
void _getContacts() async {
await Future.delayed(Duration(milliseconds: 200));
ContactProvider contactProvider =
Provider.of<ContactProvider>(context, listen: false);
contactProvider.contacts = dummyData;
}
Provider'ımızı başlatıyoruz ve providerdaki kişilerimizi güncelliyoruz. Provider'ınızı başlatırken은 parametresini false olarak ayarlamayı unutmayın을 듣습니다. Provider'ı yalnızca verilerinize erişmek için kullanırsınız, değişiklikleri dinlemek için değil.
Artık verileri elde ettiğimize gore, geriye kalan bir sonraki şey, bu verileri ListView'de tüketmek. Bunu _buildListView() yonteminde yapıyoruz.
Widget _buildListView(context) {
return Consumer<ContactProvider>(
builder: (context, snapshot, child) {
return ListView.builder(
itemBuilder: (context, index) => ContactCard(
index: index,
contact: snapshot.contacts[index],
updateCallback: _updateContact,
deleteCallback: () => snapshot.removeContact(index),
),
itemCount: snapshot.contacts.length,
);
},
);
}
ListView'imizi, türünün ContactProvider 이전 버전 0
Consumer<T>()
위젯'이나 사리요루즈. Tüketici olusturucu işlevi bize bir context, model ve alt değişkenler verir. Model Bize ListView'imizi doldurmak için kullandığımız kişileri sağlar. Aşağıdaki kişi listemiz için kullanıcı arayüzünü gorebilirsiniz.Bu yazıda Provider ve Consumer'ın nasıl kullanılacağına ve ChangeNotifiers konularına goz attık ve provider'ı, contact uygulamamızı oluşturmak için kullandık.
Kodun tamamına ulaşmak için: https://github.com/gulsenkeskin/contacts_app
reference
Reference
이 문제에 관하여(제공자 ile Çalışmak 💫 🌌 ✨), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gulsenkeskin/provider-ile-calismak-l4l텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)