我在处理这个问题时遇到了极大的困难。我调用了一个异步函数,它将从 SQLite 获取一些信息,但我似乎无法获取它。它只是呈现一个空屏幕,其中应该是一个列表视图。
List allItems = new List();
Future<void> pegaDados() async{
var itens = await geraCardapio();
for (var i = 0; i < itens.length; i++) {
print((itens[i].toMap()));
allItems.add(itens[i].toMap());
}
}
print(pegaDados());
return ListView.builder(
itemCount: allItems.length,
itemBuilder: (context, index) {
return ListTile(
leading: Image.asset("assets/"+ allItems[index]['imagem'], fit: BoxFit.contain,),
title: Text(allItems[index]['pedido']),
trailing: Text(allItems[index]['valor']),
);
},
);
Run Code Online (Sandbox Code Playgroud)
非常感谢。
我设法得到了解决方案,感谢回答问题的两个人(使用这两种解决方案我设法得到了这个小弗兰肯斯坦)
Future<dynamic> pegaDados() async{
var allItems = await geraCardapio();
return allItems.map((allItems) => allItems.toMap());
}
return FutureBuilder(
future: pegaDados(),
builder: (context, snapshot){
if(snapshot.connectionState == ConnectionState.done){
print(snapshot.data);
var …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为用户创建此输入字段来注册其引脚,但是我不想调用另一个上下文屏幕。因此,要点很简单,用户键入 PIN 码,字段会被清除,屏幕中的文本会发生变化,然后用户再次键入以确认 PIN 码。
我遇到了两个问题。无论我做什么,该字段都不会清除,当我单击该字段再次键入时,状态将重置回第一个引脚输入。这是小部件的代码。
//Form fields
StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return Column(
children: [
Container(
width: 330,
child: pinCodeType == 1
? Text("Choose a Pincode",
style: TextStyle(color: brandBlue, fontSize: 18))
: Text("Repeat your Pincode",
style: TextStyle(color: brandBlue, fontSize: 18)),
),
Container(
height: 90,
width: 330,
child: pinCodeType == 1
? new PinCodeTextField(
enablePinAutofill: false,
keyboardAppearance: Brightness.dark,
length: 5,
obscureText: true,
textStyle: TextStyle(color: brandBlue),
animationType: AnimationType.scale,
keyboardType: TextInputType.numberWithOptions(),
autoDisposeControllers: true,
pinTheme: PinTheme(
shape: PinCodeFieldShape.underline,
//borderRadius: BorderRadius.circular(5), …
Run Code Online (Sandbox Code Playgroud)