问题: 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/