Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter firestore阵列中的颤振填充下拉按钮_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter firestore阵列中的颤振填充下拉按钮

Flutter firestore阵列中的颤振填充下拉按钮,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,如何将此数组列表填充到下拉按钮中 我想将此位置列表填充到下拉按钮。 [以下是我的数据库的外观] 您可以按以下方式创建下拉按钮 import 'package:flutter/material.dart'; void main() => runApp(MaterialApp( home: MyApp(), )); class MyApp extends StatefulWidget { @override _MyAppState createState(

如何将此数组列表填充到下拉按钮中

我想将此位置列表填充到下拉按钮。 [以下是我的数据库的外观]

您可以按以下方式创建下拉按钮

   import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(
      home: MyApp(),
    ));

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String dropdownValue;
  List<String> listOfStrings = ["apple", "banana", "strawberry", "cherry"];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: DropdownButton<String>(
          value: dropdownValue,
          icon: Icon(Icons.arrow_downward),
          iconSize: 24,
          elevation: 16,
          style: TextStyle(color: Colors.deepPurple),
          underline: Container(
            height: 2,
            color: Colors.deepPurpleAccent,
          ),
          onChanged: (String newValue) {
            setState(() {
              dropdownValue = newValue;
            });
          },
          items: listOfStrings.map<DropdownMenuItem<String>>((String value) {
            return DropdownMenuItem<String>(
              value: value,
              child: Text(value),
            );
          }).toList(),
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(MaterialApp(
主页:MyApp(),
));
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
字符串下拉值;
列表字符串=[“苹果”、“香蕉”、“草莓”、“樱桃”];
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:下拉按钮(
value:dropdownValue,
图标:图标(图标。向下箭头),
iconSize:24,
海拔:16,
样式:TextStyle(颜色:Colors.deepPurple),
下划线:容器(
身高:2,
颜色:颜色。深紫色,
),
onChanged:(字符串newValue){
设置状态(){
dropdownValue=newValue;
});
},
项:listOfStrings.map((字符串值){
返回下拉菜单项(
价值:价值,
子项:文本(值),
);
}).toList(),
),
),
);
}
}

我推荐
flatter\u form\u bloc
套餐。这非常有帮助,您可以异步地将项添加到下拉数组中,以便从API或Firebase获取它们


但是,如果不想使用包,可以创建一个空列表,并将其最初分配给items参数。在您的
initState
方法中,您可以用项目填充该列表,然后调用
setState

我知道,现在回答您的问题已经太晚了。但也许,我的答案是给任何寻求答案的人的

只需使用streambuilder在下拉列表中对firestore数据进行流式处理。 以下是我的例子:

      StreamBuilder(
      stream: Firestore.instance.collection('your collectionName').document('yourDocument').snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return textCustom('Loading', Colors.black87, 16, 'Montserrat');
        } else {
          final data = snapshot.data['data'];
          return Theme(
            data: Theme.of(context).copyWith(
              canvasColor: Color(0xFF221F1F),
            ),
            child: DropdownButtonFormField(
              style: TextStyle(color: Colors.white70),                                               
              value: _value,
              items: data
                  .map<DropdownMenuItem<String>>(
                    (x) => DropdownMenuItem(
                      child: textCustom(
                          x, Colors.white, 16, 'Montserrat'),
                      value: '${x}',
                    ),
                  )
                  .toList(),
             
              onChanged: (val) => setState(() {
                _value = val;
           
              }),
            ),
          );
        }
      },
    )
StreamBuilder(
流:Firestore.instance.collection('your collectionName').document('yourDocument').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData){
返回textCustom('Loading',Colors.black87,16,'Montserrat');
}否则{
最终数据=快照.data['data'];
返回主题(
数据:Theme.of(context).copyWith(
画布颜色:颜色(0xFF221F1F),
),
子项:DropdownButtonFormField(
样式:TextStyle(颜色:Colors.white70),
值:_值,
项目:数据
.地图(
(x) =>下拉菜单项(
孩子:textCustom(
x、 颜色:白色、16、‘蒙特塞拉特’,
值:“${x}”,
),
)
.toList(),
一旦更改:(val)=>setState(){
_值=val;
}),
),
);
}
},
)

签出此链接是否回答了您的问题?当我手动尝试时,它正在工作。当我使用数据['location']时。它给我一个错误。'List'不是'List'类型的子类型。我收到一个错误类型。'List'不是'List'类型的子类型,就像它正在工作一样。我试着用它来表示错误。List listofstring=data['location']什么是数据['location']?你必须给出列表。数据['location']是我从firestore收到的数据。看了这张图片后,你可能会明白这一点。()使用方法如下。List listofstring=data['location'].map((e)=>e.toString()).toList()@利万