[英]Why this toggle button not working in flutter - dart?
我正在從 model 中檢索切換按鈕的 boolean 值。 該按鈕不在屏幕中的真假之間切換。 我是 flutter 的新手,請幫我解決這個問題。
這是我為切換按鈕提供的代碼。
Padding(
padding: const EdgeInsets.symmetric(horizontal: 5.0),
child: AnimatedContainer(duration: Duration(milliseconds: 1000),
height: 35.0,
width: 70.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20.0),
color: TaskData().tasks[0].isOn ? Color(0xFF1F8BD0): Colors.grey[100]!.withOpacity(0.2)
),
child: Stack(
children: <Widget>[
AnimatedPositioned(
duration: Duration(milliseconds: 400),
curve: Curves.ease,
left: TaskData().tasks[0].isOn ? 30.0 : 0.0,
right: TaskData().tasks[0].isOn ? 0.0 : 30.0,
child: InkWell(
onTap: (){
setState(() {
TaskData().tasks[0].isOn = !TaskData().tasks[0].isOn;
});
},
child: AnimatedSwitcher(
duration: Duration(milliseconds: 10),
transitionBuilder: (Widget child, Animation<double> animation) {
return ScaleTransition(child: child, scale: animation);
},
child: TaskData().tasks[0].isOn? Icon(Icons.circle, color: Colors.white, size: 35.0,
key: UniqueKey(),
) : Icon(Icons.circle, color: Colors.white, size: 35.0,
key: UniqueKey(),
),
),
),
),
],
),
),
)
此代碼來自 Model:
class T{
final String tsk;
bool isOn;
T({required this.tsk, required this.isOn});
}
class TaskData {
List tasks = [
T(tsk: "complete the work", isOn: false),
T(tsk: "do the work", isOn: false),
T(tsk: "do the pending works", isOn: false)
]
}
每次使用TaskData()
時,都會使用新的任務列表創建該 class 的新實例。
您需要創建一個包含TaskData
實例的變量。 否則,您所做的所有更改都將毫無意義,因為您每次調用都會重新創建數據。
在您的程序中的某個時刻,您需要一個變量,也許將其命名為myTaskData
:
final myTaskData = TaskData();
然后用myTaskData
替換每個TaskData()
調用,這樣它們都引用同一個實例。
請注意, build
方法不是該變量的正確位置。 它應該在某種State
class 的 class 級別上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.