小编Ami*_*mir的帖子

颤振回调函数

我有一个数量需要在父小部件中更新。按子小部件中的 + 或 - 图标时需要更新数量。我将回调函数传递给了子无状态小部件,但它不起作用。相反,我收到一条错误消息,指出在构建期间调用了 setstate() 或 markneedsbuild() 。

这是父小部件

class Wash extends StatefulWidget {
  @override
  _WashState createState() => _WashState();
}

class _WashState extends State<Wash> {
   int quantity = 0;

   void updateQuantity(command) {
     if (command == 'add') {
       setState(() {
        quantity++;
       });
     } else {
      setState(() {
       quantity--;
     });
    }  
   }

 @override
 Widget build(BuildContext context) {
   return Scaffold(
    body: OrderTile(
          imgPath: 'shorts',
          itemType: 'Shorts',
          quantityCallBack: updateQuantity,
        ),
   );
 }
Run Code Online (Sandbox Code Playgroud)

这是子部件

class OrderTile extends StatelessWidget {
OrderTile({this.itemType, this.imgPath, this.quantityCallBack});

final String …
Run Code Online (Sandbox Code Playgroud)

android function callback dart flutter

5
推荐指数
1
解决办法
5988
查看次数

更新列表中的对象

我正在调用类中的函数来更新列表对象。我已成功获取所需的对象并更改其中的值。如何更新回原始列表?

这是我的代码:

void updateTask(
  Guid id, String title, String start, String end, String timeleft) {
  final taskToBeUpdated = _tasks.firstWhere((element) => element.id == id);
  taskToBeUpdated.title = title;
  taskToBeUpdated.start = start;
  taskToBeUpdated.end = end;
  taskToBeUpdated.timeLeft = timeleft;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用 forloop 来实现这一点

for (var i = 0; i < _tasks.length; i++) {
  if (_tasks[i].id == id) {
    _tasks[i].title = title;
    _tasks[i].start = start;
    _tasks[i].end = end;
    _tasks[i].timeLeft = timeleft;
  }
}
Run Code Online (Sandbox Code Playgroud)

但有没有更短的方法呢?

android list object dart flutter

2
推荐指数
1
解决办法
1226
查看次数

标签 统计

android ×2

dart ×2

flutter ×2

callback ×1

function ×1

list ×1

object ×1