uj5u.com熱心網友回復:
如果你使用的是有狀態的widget,那么應用setstate()來重新構建你的widget。 如果你想使用無狀態的widget,那么請使用像GetX或provider這樣的狀態管理。 對于GetX來說,在控制器中創建可觀察的串列,并用obx包裹widget,所以每當串列被更新時,obx將為你再次建立特定的widget。 要正確地學習GetX,請看這個由tadas petra創建的播放串列。 https://www.youtube.com/playlist?list=PL26uY6-lIzqkmvpNr9gMCrIvl8k5Mqrhs
uj5u.com熱心網友回復:
已編輯
嘗試使用setstate
import 'package:flutter/material.dart'/span>。
import 'package:flutter_tindercard/flutter_tindercard.dart';
class ExampleHomePage extends StatefulWidget{
@override
_ExampleHomePageState createState() => _ExampleHomePageState()。
}
class _ExampleHomePageState extends State< ExampleHomePage>
with TickerProviderStateMixin {
List approved = [];
List refused = [];
List<String> welcomeImages = [
"https://images.unsplash.com/photo-1631636176993-759dea1a1300?ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHw0fHx8ZW58MHx8fHw=&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60" ,
"https://images.unsplash.com/photo-1631634176568-f543af6a41de?ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHw3fHx8ZW58MHx8fHw=&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60"。
"https://images.unsplash.com/photo-1631691971564-adf9419d904e?ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwxM3x8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60"。
"https://images.unsplash.com/photo-1631641906574-24adb8594649?ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHwxMnx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60"。
"https://images.unsplash.com/photo-1593642702821-c8da6771f0c6?ixid=MnwxMjA3fDF8MHxlZGl0b3JpYWwtZmVlZHwxMXx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60"。
"https://images.unsplash.com/photo-1631621461675-e61a1f28d3d6?ixid=MnwxMjA3fDB8MHxlZGl0b3JpYWwtZmVlZHw0NHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60"?
];
List<TinderCarder> cards = [] 。
CardController controller = CardController(); //Use this to trigger swap.
@override
void initState() {
// TODO: implement initState
super.initState()。
卡片 = welcomeImages.map((element) {
return TinderCarder(
image: element,
controller: 控制器。
onLeftPress: () {
setState(() {
cards.removeAt(element.indexOf(element))。
print('index is: ' "${element.indexOf(element)}")。)
print('list length: ' cards.length.toString())。
});
},
onRightPress: () {
setState(() {
cards.removeAt(element.indexOf(element))。
print('index is: ' "${element.indexOf(element)}")。)
print('list length: ' cards.length.toString())。
});
},
);
}).toList()。
}
@override
Widget build(BuildContext context) {
return Scaffold(
體。容器(
width: double.infinity,
孩子。SingleChildScrollView(
child: ListView(
shrinkWrap: true。
key: key(card.length.toString())。
物理學。ScrollPhysics()。
children: cards,
),
),
),
);
}
}
class TinderCarder extends StatelessWidget{
final String image。
Function onLeftPress;
Function onRightPress;
var 控制器。
TinderCarder(
{ this.image,
this.controller,
this.onLeftPress,
this.onRightPress})。)
@override
Widget build(BuildContext context) {
return Container(
高度。200。
孩子。TinderSwapCard(
方向。AmassOrientation.BOTTOM,
totalNum: 1,
stackNum: 3,
swipeEdge: 4.0,
maxWidth: MediaQuery.of(context).size.width * 0.9,
maxHeight: MediaQuery.of(context).size.width * 0.9, maxHeight: MediaQuery.of(context).size.width * 0.9,
minWidth: MediaQuery.of(context).size.width * 0.8,
最小高度。MediaQuery.of(context).size.width * 0.8, minHeight: MediaQuery.of(context).size.width * 0.8,
cardBuilder: (context, index) => Card(
孩子。Image.network(
影像。
width: double.infinity,
適合。BoxFit.cover。
),
),
cardController: 控制器。
swipeUpdateCallback: (DragUpdateDetails details, Alignment align) {
//獲取刷卡的對齊方式。
if (align.x < 0) {
} else if (align.x > 0) {}.
},
swipeCompleteCallback: (CardSwipeOrientation orientation, int index) {
print(orientation.toString())。
if (orientation == CardSwipeOrientation.LEFT) {
print("Card is LEFT swiping"/span>)。
//print(welcomeImages.length);
onLeftPress()。
} else if (orientation == CardSwipeOrientation.RIGHT) {
print("Card is RIGHT swiping"/span>)。
// print(welcomeImages.length);/span>
onRightPress()。
}
},
),
);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315503.html
標籤:


