我是Flutter开发的新手,正在尝试显示下拉列表的选定值,但无法正常使用。
您可以选择一个孩子,并且效果很好,但是下拉菜单中没有显示该孩子,就像没有选择一样。
这是我的代码:
import 'package:app2date/repository/repository.dart';
import 'package:app2date/model/FeedSource.dart';
import 'package:app2date/model/FeedCategory.dart';
import 'package:app2date/util/ui.dart';
import 'package:flutter/material.dart';
class ManageFeedSource extends StatefulWidget {
ManageFeedSource({Key key, this.feedSource}) : super(key: key);
final FeedSource feedSource;
@override
_ManageFeedSource createState() => new _ManageFeedSource();
}
class _ManageFeedSource extends State<ManageFeedSource> {
final tfNameController = new TextEditingController();
final tfUrlController = new TextEditingController();
var editMode = false;
FeedCategory _feedCategory;
@override
Widget build(BuildContext context) {
FeedSource feedSource = widget.feedSource;
if (feedSource != null) {
tfNameController.text = feedSource.name;
tfUrlController.text = feedSource.url;
editMode = true;
}
return Scaffold(
appBar: AppBar(
title: Text('New Feed'),
),
body: new FutureBuilder(
future: Repository.get().getFeedCategories(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
List<FeedCategory> categoriesList = snapshot.data;
if (categoriesList != null) {
if (categoriesList.isNotEmpty) {
_feedCategory = categoriesList[0]; // The dropdown doesn’t draw the element (the list has elements)
}
print("${_feedCategory}");
return new Padding(
padding: EdgeInsets.all(12.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
new DropdownButton<FeedCategory>(
hint: Text("Select Category"),
items: categoriesList.map((FeedCategory category) {
return new DropdownMenuItem<FeedCategory>(
value: _feedCategory,
child: Text(_feedCategory.name),
);
}).toList(),
onChanged: (FeedCategory category) {
setState(() {
_feedCategory = category; // Problem here too, the element doesn’t show in the dropdown as selected
print("Selected: ${_feedCategory.name} (${_feedCategory.id})");
});
},
),
],
),
),
],
),
);
} else {
return Container(
decoration: new BoxDecoration(color: Colors.white),
);
}
},
),
);
}
@override
void initState() {
super.initState();
}
}
我将非常感谢您的帮助。
答案 0 :(得分:3)
检查DropdownButton类,有一个名为value
的属性,在该位置使用变量_feedCategory,在DropdownMenuItem
地图上,而不是_feedCategory使用类别:
new DropdownButton<FeedCategory>(
value: _feedCategory,
hint: Text("Select Category"),
items: categoriesList.map((FeedCategory category) {
return new DropdownMenuItem<FeedCategory>(
value: category,
child: Text(category.name),
);
}).toList(),
onChanged: (FeedCategory category) {
setState(() {
_feedCategory = category; // Problem here too, the element doesn’t show in the dropdown as selected
print("Selected: ${_feedCategory.name} (${_feedCategory.id})");
});
},
),