如果列表数据模型中的一个等于当更改一个已更改的拖航时的列表拖航



这是这个问题的屏幕上理解问题的所有代码

import 'package:flutter/material.dart';
import 'package:pos/utils/FCIStyle.dart';
class TestScreen extends StatefulWidget {
const TestScreen({Key? key}) : super(key: key);
@override
_TestScreenState createState() => _TestScreenState();
}
class _TestScreenState extends State<TestScreen> {
@override
void initState() {
super.initState();
testController= TestController();
}
late TestController testController;
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
backgroundColor: FCIColors.primaryColor(),
elevation: 0,
leading: Container(),
),
body: Column(
children: [
Text('data 1'),
Container(
height: 100,
child: Column(
children: List.generate(
testController.data1.length,
(index) => Text('itemCount:${testController.data1[index].itemCount}',),),
),
),
SizedBox(height: 50),
Text('data 2'),
Container(
height: 200,
child: Column(
children: List.generate(
testController.data2.length,
(index) => Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('  itemCount:${testController.data2[index].itemCount}',),
InkWell(
onTap: (){
setState(() {
testController.changeStrData(index);
});
},
child: Icon(Icons.add_circle,size: 35,color: Colors.indigo,
))
],
)
,),
),
),
],
),
));
}
}
class TestController{
final List<Data>data1=[
Data(  itemCount: 0),
Data( itemCount: 0),
Data(  itemCount: 0),
];
late List<Data>data2;
TestController(){
data2= data1;
}
changeStrData(index){
data2[index].itemCount+=1;
}
}
class Data{
int itemCount;
Data({ required this.itemCount});
}

这个问题等于。

TestController(){
data2= data1;
}

数据模型列表如何与其他列表相等?

Data的实例在这里是相同的。所以仅仅创建新的实例CCD_ 2是不够的。

解决方案是从列表中创建新数据。

data2 = data.map((e) => Data(itemCount: e.itemCount)).toList();

你可以参考一下《飞镖通行证》吗?

最新更新