Rad etish yoki Do the so'ralgan yaxshilik qiladi. Uchun misol, a yaxshilik edi so'ralgan tomonidan do'st va foydalanuvchi qabul qilishi yoki rad etishi mumkin. Shunday qilib, ulardan biriga teging tugmalari muruvvatni o'z holatini Rad etilgan yoki Qilmoqda qilib o'zgartiradi .
Oldingi holatda bo'lgani kabi, lekin bu safar qabul qilingan iltimosnoma kutilmoqda yakunlash, va bular tugmalar ruxsat berish the foydalanuvchi uchun berish yuqoriga yoki to'liq yaxshilik; ya'ni ularni bosish mos ravishda Rad etilgan va Tugallangan maqomiga o'zgaradi .
Oxirgi, biz bor the So'rov a yaxshilik tugma, qaysi asosan ochiladi a ikkinchi ba'zi do'stlarimizdan iltimos qilishimizga imkon berish uchun ilova ekraniga teging.
Sifatida siz mumkin qarang dan the Oldingi imo-ishoralar, biz bo'ladi bo'l muomala bilan teging, aylantiring,
va surish imo-ishoralari. Ularning barchasi GestureDetector yordamida amalga oshirilishi mumkin bevosita, lekin, biz kabi bor foydalanish Tugma va ListView vidjetlar, bu o'zgarishlar a biroz bit. Eslab qoling, Flutter o'rnatilgan vidjetlar bor shuningdek tuzilgan ning a ko'p ning boshqa o'rnatilgan vidjetlar, shunday biz bo'ladi bo'l GestureDetector bilan ishlash bilvosita.
In amaliyot, biz bo'ladi bo'l ishlov berish kranlar tomonidan o'zimizni, kabi the boshqa imo-ishoralar bor ishlov berilgan tomonidan biz foydalangan vidjetlar: ListView bilan aylantirish va TabBar yordamida surish va teginish va TabView .
ga teging imo-ishoralar yoqilgan the yaxshilik tab
Yuqorida aytib o'tganimizdek, DefaultTabController hozirda ko'rinadigan yorliq vidjetini o'zgartiradi qachon the foydalanuvchi kranlar yoqilgan the tab bar yoki surish uchun the chap yoki to'g'ri yoqilgan the ko'rinish. tomonidan ushbu vidjetdan foydalanib, biz TabBarda kontrollerni belgilashimiz shart emas va TabView avlodlari.
FavorCards -da imo-ishoralarni bosing
FavorCardItem'dan _ vidjetning foydasi mulk, biz o'zgartirish orqali uning holatini manipulyatsiya qilishimiz mumkin uning qabul qilingan va yakunlandi maydon qiymatlar. Biroq, bu bo'ladi emas olib tashlash the dan element the joriy ro'yxati va qo'shish bu uchun the yangi maqsad ro'yxati. Kimga qil bu, biz bo'lardi kerak kirish Joriy ro'yxatni oching, u yerdan yoqtirgan narsani olib tashlang va bosilgan tugmaga qarab uni yangi ro'yxatga qo'shing.
Biz mumkin foydalanish bizning global yaxshilik qiladi ro'yxati bevosita ichida the karta element bosilgan usul, lekin Bu biznes mantig'ini vidjetlar orqali tarqatishni nazarda tutadi, bu hozir yaxshi ko'rinadi, lekin osongina chalkashishi mumkin.
Shunday qilib, qayerda kerak biz tutqich bu harakat samarali? Biz mumkin tutqich hammasi ning bular harakatlar ichida FavorsPage vidjet, qaysi o'z ichiga oladi hammasi ning the yaxshilik qiladi ro'yxatlar. Lekin Kutmoq - FavorsPage hisoblanadi StatelessWidget da , imtiyozlar roʻyxati uning konstruktor usuliga yuklanadi va u fuqaroligi yoʻqligi sababli ular vidjetni har bir qayta qurishda yuklanadi va unga oʻzgartirishlarimizni yoʻqotadi.
yasash FavorsPage a StatefulVidget
The birinchi qadam uchun qilish bizning ilova interaktiv hisoblanadi uchun o'zgartirish FavorsPage uchun StatefulVidget bo'ling :
sinf FavorsPage uzaytiradi StatefulVidget { FavorsPage({
Kalit kalit,
}) : super(kalit: kalit);
@override
State createState() => FavorsPageState();
}
The birinchi narsa biz o'zgartirish hisoblanadi the ajdod ning FavorsPage , va hozir uning faqat ish hisoblanadi uchun qaytish a
FavorsPageState misol ichida the createState() usul:
sinf FavorsPageState uzaytiradi Davlat {
// foydalanish masxara qilish qiymatlar dan mock_favors dart fayl uchun hozir Ro'yxat pendingAnswerFavors;
Ro'yxat qabul qilingan imtiyozlar; Ro'yxat tugallangan imtiyozlar; Ro'yxat refusedFavs;
@override
bekor initState() { super.initState();
PendingAnswerFavors = Ro'yxat(); qabul qilingan imtiyozlar = Ro'yxat(); tugallangan imtiyozlar = Ro'yxat(); rad etdiFavors = Ro'yxat();
loadFavors();
}
bekor loadFavors() { pendingAnswerFavors.addAll(mockPendingFavors); acceptedFavors.addAll(mockDoingFavors); tamamlananFavors.addAll(mockCompletedFavors); refusedFavors.addAll(mockRefusedFavors);
}
@override
Vidjet qurish (BuildContext kontekst) { ... } // yashirin uchun qisqa
}
Endi Davlat ob'ekt qayta qurish o'rtasida davom etishi kerak bo'lgan ma'lumotlarni saqlaydi va bu ob'ekt bo'ladi bo'l the Manzil ning hammasi the harakatlar uchun the yaxshilik qiladi. Garchi emas optimal, hech bo'lmaganda bitta joyda markazlashtiriladi. Buni to'g'ri bajarish uchun bizga qandaydir arxitektura kerak deyman: MVP, MVVM, BloC va Redux ba'zi misollardir.
Biroq, uchun saqlamoq narsalar oddiy, biz bo'ladi foydalanish the yondashuv bizda bor shu yerda olingan .
Shunday qilib, qilaylik boshlash tomonidan ishlov berish the kutilmoqda iltimos harakatlar. Ular edi belgilangan
kabi Rad etish yoki Qilish . Kimga tutqich ular, biz kerak uchun o'tish a ishlov beruvchi uchun the bosilgan mulk allaqachon aniqlangan FlatButton FavorCardItem'dagi vidjetlar .
Kimdan the tugmalari bosilgan usul, biz kerak uchun qandaydir tarzda kirish FavorsPageState amalga oshirish bular harakatlar. Bu mumkin bo'l bajarildi bilan the ancestorStateOfType() usuli BuildContext dan Davlat uchun daraxtni qidiradigan sinf Berilgan turdagi ob'ekt:
// qismi ning FavorsPageState sinf
statik FavorsPageState of (BuildContext kontekst) {
qaytish context.ancestorStateOfType(TypeMatcher< FavorsPageState >());
}
A umumiy naqsh uchun ta'minlash bu funktsiyasi hisoblanadi tomonidan qo'shish a statik usuli yoqilgan the berilgan freymvork funksiyasiga chaqiruvni amalga oshiradigan turi . Bu ta'minlash uchun amalga oshiriladi
a qisqacha yo'l ga kirish davlat kamroq kod bilan.
Rad etish harakat ishlov berish
Bu hisoblanadi Qanday the Rad etish tugmasi ko'rinadi keyin foydalanish the yuqorida aytib o'tilgan funksionallik:
// qismi ning hands_on_input/lib/main.dart FavorCardItem sinf
// _itemFooter usuli Yassi tugma(
bola: Matn ("Rad etish"), bosilgan: () {
Do'stlaringiz bilan baham: |