关于Widgets必须知道的事
本篇内容简要说明:
- widget 介绍
- widget 对象
Widget 介绍
在flutter的设计哲学中,一切元素和功能都是Widget,比如手势是一个widget,一个文字是一个Widget,以及你看到的所有的可视的内容都是widget
widget 对象
来说一下 widget 对象,在statefulWidget 中 有很多的情景是需要初始数据,如下:
class ShoppingList extends StatefulWidget {
const ShoppingList({required this.products, Key? key}) : super(key: key);
// 这里就是我们传递的数据
final List<Product> products;
_ShoppingListState createState() => _ShoppingListState();
}
class _ShoppingListState extends State<ShoppingList> {
final _shoppingCart = <Product>{};
void _handleCartChanged(Product product, bool inCart) {
setState(() {
if (!inCart) {
_shoppingCart.add(product);
} else {
_shoppingCart.remove(product);
}
});
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Shopping List'),
),
body: ListView(
padding: const EdgeInsets.symmetric(vertical: 8.0),
// 这里products对象使用,需要通过 widget对象来调用.
// 所以widget对象在flutter中等同于 其他语言中的this、self等 指向当前的widget
children: widget.products.map((Product product) {
return ShoppingListItem(
product: product,
inCart: _shoppingCart.contains(product),
onCartChanged: _handleCartChanged,
);
}).toList(),
),
);
}
}
这里products对象使用,需要通过 widget对象来调用.
所以widget对象在flutter中等同于 其他语言中的this、self等 指向当前的widget