Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.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 小部件功能在列小部件中不起作用?_Flutter_Dart_Flutter Layout_Flutter Dependencies_Flutter Test - Fatal编程技术网

Flutter 小部件功能在列小部件中不起作用?

Flutter 小部件功能在列小部件中不起作用?,flutter,dart,flutter-layout,flutter-dependencies,flutter-test,Flutter,Dart,Flutter Layout,Flutter Dependencies,Flutter Test,我正在构建一个MusicPlayer应用程序,所以我需要查看音乐片段列表,以便用户可以从内部存储器中选择歌曲并播放。所以我在appbar中通过add按钮使用了File_Picker,用户可以从本地存储器中拾取音乐。所以我在文件拾取函数中使用了async和wait关键字。我将文件路径和文件名存储在变量列表类型中。之后,我在我的column小部件中使用了我的_BuidMusicle()函数,但它给出了以下错误: =>类型“未来”不是类型“小部件”的子类型。 代码: class\u musicpage

我正在构建一个MusicPlayer应用程序,所以我需要查看音乐片段列表,以便用户可以从内部存储器中选择歌曲并播放。所以我在appbar中通过add按钮使用了File_Picker,用户可以从本地存储器中拾取音乐。所以我在文件拾取函数中使用了async和wait关键字。我将文件路径和文件名存储在变量列表类型中。之后,我在我的column小部件中使用了我的_BuidMusicle()函数,但它给出了以下错误:

=>类型“未来”不是类型“小部件”的子类型。

代码:

class\u musicpagentate扩展状态{
FileType _pickingType=FileType.any;
TextEditingController _controller=TextEditingController();
音频文件路径列表;
音频列表;
@凌驾
void initState(){
super.initState();
_controller.addListener(()=>\u扩展=\u controller.text);
}
@凌驾
小部件构建(构建上下文){
Size Size=MediaQuery.of(context).Size;
//const Key centerKey=ValueKey('bottom-silver-list');
返回脚手架(
背景颜色:颜色。棕色[300],
appBar:appBar(
行动:[
容器(
宽度:size.width,
孩子:填充(
填充:常数边集全部(8.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
图标按钮(
图标:图标(Icons.sort),
按下:(){},
),
图标按钮(
图标:图标(图标。添加圆圈),
onPressed:()异步{
//_openFileExplorer();
FilePickerResult结果=等待FilePicker.platform
.pickFiles(allowMultiple:true);
如果(结果!=null){
listofaudiofilepath=result.path.toList();
listofAudioNames=result.names.toList();
打印(音频列表);
打印(音频文件路径列表);
}
},
),
],
),
),
),
],
),
正文:专栏(
儿童:[
文本(“音乐库”),
尺寸箱(高度:10),
堆叠(
儿童:[
_构建音乐片段(音频片段列表、音频片段列表),
],
),
],
),
);
}
}
_建筑乐章(
ListOfAudioFilePath、listofAudioNames)异步{
List listOfPath=等待音频文件路径列表;
List LISTOFILES=等待音频文件路径列表;
if(listofaudiofilepath!=null&&listofAudioNames!=null){
返回ListView.separated(
itemCount:listofAudioNames.length,
separatorBuilder:(BuildContext,int索引){
返回容器(
身高:10,
颜色:颜色,白色,
);
},
itemBuilder:(构建上下文,int索引){
返回列表块(
前导:图标(图标。播放\u循环\u填充),
标题:正文(
“$listofAudioNames[$index]”,
样式:TextStyle(颜色:Colors.black,字体大小:25),
),
);
},
);
}否则{
返回中心(
子:列(
儿童:[
正文(
“$listofAudioNames”,
样式:TextStyle(颜色:Colors.black,字体大小:25),
),
CircularProgressIndicator(),
],
),
);
}
}

您不能在主体或从主体调用的方法中使用
wait
,因为需要在屏幕上呈现,UI不能等待任何数据,我们需要更新它

解决方案:

只需从方法
\u buildMusicTile
中删除
wait
async

  List<String> listOfPath = listofAudioFilesPath;
  List<String> listOfFiles = listofAudioFilesPath;

请尝试使用
FutureBuilder
Brother,它仍然会给出相同的错误:在生成MudicPage(脏的,依赖项:[MediaQuery],状态:_musicVantate#1cfac]时抛出以下类型错误:_musicVantate#1cfac):类型“Future”不是类型“Widget”的子类型。此外,请从_buildMusicTile()中删除异步关键字,谢谢Brother的帮助。
setState(() {
        print(listofAudioNames);
        print(listofAudioFilesPath);
  });