gpt4 book ai didi

dart - setState 没有更新值

转载 作者:IT王子 更新时间:2023-10-29 07:07:24 25 4
gpt4 key购买 nike

问题:setState 未保存 _products 的值。

尝试过:如果我在 setState 函数中打印 _products 的值,它会更新:

['Product 1', 'Product 2', 'New Product']

但是当我将 _products 传递给我的 Products 类时,_products 的值被重置:

['Product 1', 'Product 2']

代码:

import 'package:flutter/material.dart';

import './products.dart';

class ProductManager extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _ProductManagerState();
}
}

class _ProductManagerState extends State<ProductManager> {
@override
Widget build(BuildContext context) {

List<String> _products = ['Product 1', 'Product 2'];
return Column(
children: [
Container(
margin: EdgeInsets.all(10.0),
child: RaisedButton(
onPressed: () {
setState(() {
_products.add('New Product');
});
},
child: Text('Add Product'),
),
),
Products(_products),
],
);
}
}

最佳答案

build 函数之外初始化 _products 列表。

每次您调用 setState() 时,都会调用 build() 方法来重置 _products,因为它是在方法内部初始化的。

尝试这样做:

class _ProductManagerState extends State<ProductManager> {

List<String> _products = ['Product 1', 'Product 2'];

@override
Widget build(BuildContext context) {
/*Rest of the code*/
}
}

关于dart - setState 没有更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54665699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com