【发布时间】:2021-05-01 00:22:21
【问题描述】:
这是我的代码。当您在上面的字段中输入城市然后按加号按钮时,它应该添加一个列表图块。但事实并非如此!有一个列表视图,其中包含所有列表图块。列表视图应该显示列表中的所有列表图块。 当我按下按钮时,会打印一条消息以指示城市数量。它显示添加了城市,但屏幕上没有任何变化。 ColorfulBox 是我构建的一个小部件。这只是一个装饰品。
import 'package:flutter/material.dart';
import 'package:learner/logic/Weather.dart';
import 'ColorfulBox.dart';
class CitiesScreen extends StatefulWidget{
@override
_CitiesScreenState createState() => _CitiesScreenState();
}
class _CitiesScreenState extends State<CitiesScreen>{
List<Weather> weatherData = List<Weather>();
String cityName;
List<Widget> cities = List<Widget>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(vertical: 20, horizontal: 10),
child: Column(
children: <Widget>[
DecoratedBox(
decoration: BoxDecoration(color: Colors.blueAccent, borderRadius: BorderRadius.circular(10),
gradient: LinearGradient(colors: [Colors.blue, Colors.purple]) ),
child: ColorfulBox(Padding(
padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 0),
child: ListTile(
title: TextField(onChanged: (value){
cityName = value;
},
style: TextStyle(fontSize: 20, color: Colors.white),),
trailing: FlatButton(
child: Icon(Icons.add, size: 30, color: Colors.white,),
onPressed: (){
setState(() {
addCity(cityName);
print(cities.length);
});
},
),
),
),
)
),
SizedBox(height: 30,),
Expanded(
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.vertical,
children: cities,
),
)
],
),
),
);
}
void addCity(String city){
weatherData.add(Weather(city: city));
Container toBeAddedCity = Container(
margin: const EdgeInsets.symmetric(vertical: 20, horizontal: 10),
child: Text(city, style: TextStyle(fontSize: 22, color: Colors.white),),
);
cities.add(ColorfulBox(toBeAddedCity));
}
}
你能帮我解决这个问题吗?我不知道! 是不是因为 addCity 方法超出了 build 方法?还是添加但不显示?
【问题讨论】: