請幫助,我正在嘗試使用 Getx 作為狀態管理器在 listView 中按下其按鈕時獲得單個專案計數增量。
這是我嘗試過的代碼,但它失敗了。我還嘗試獲取每個串列項的索引,但無法弄清楚如何在按下按鈕時增加單個串列項的計數。
// Main.dart
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final WordsController _controller = Get.put(WordsController());
return Scaffold(
appBar: AppBar(
title: const Text("Home Page"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
_controller.add_word();
},
),
body: Obx(
() => ListView.builder(
itemCount: _controller.words.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(_controller.words[index]),
trailing: IconButton(
icon: Icon(Icons.add),
onPressed: () {
_controller.add_count_to_item();
},
),
);
},
),
),
);
}
}
// My Controller
class WordsController extends GetxController {
var words = [].obs;
var number = 0.obs;
@override
void onInit() {
add_word();
super.onInit();
}
void add_word() {
words.add("Hello $number");
}
void add_count_to_item() {
number = 1;
}
}
uj5u.com熱心網友回復:
不知道你想達到什么,但看看這個:
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class MyHomePage extends GetView<WordsController> {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Home Page")),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: () => controller.addWord(),
),
body: GetBuilder<WordsController>(
init: WordsController(),
builder: (controller) => ListView.builder(
itemCount: controller.words.length,
padding: const EdgeInsets.all(20),
itemBuilder: (context, index) {
final item = controller.words[index];
return Row(
children: [
IconButton(
icon: const Icon(Icons.clear, color: Colors.red),
onPressed: () {
controller.words.removeAt(index);
controller.update();
},
),
Text('${item.text} ${item.value}'),
const Spacer(),
IconButton(
icon: const Icon(Icons.remove, color: Colors.red),
onPressed: () {
item.value--;
controller.update();
},
),
IconButton(
icon: const Icon(Icons.add, color: Colors.blue),
onPressed: () {
item.value ;
controller.update();
},
),
],
);
},
),
),
);
}
}
class WordsController extends GetxController {
var words = <SimpleModel>[].obs;
@override
void onInit() {
addWord();
super.onInit();
}
void addWord() {
words.add(SimpleModel(text: "Hello", value: 0));
update();
}
}
class SimpleModel {
String text;
int value;
SimpleModel({
required this.text,
required this.value,
});
}
我還添加了一些您可能需要的功能。
檢查這個演示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/486635.html
上一篇:Flutter:點擊圖示上的鏈接
