Alb*_*dez 5 selected dart dropdown flutter
我是 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();
}
}
Run Code Online (Sandbox Code Playgroud)
我真的很感激任何帮助。
检查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})");
});
},
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5303 次 |
| 最近记录: |