Flutter开发之——文件系统目录pathprovider,997页手淘Android面试真题解析火爆全网

  • 在iOS上,此功能会抛出UnsupportedError,因为这是不可能的在应用程序的沙箱外部访问

  • 在Android上,对应Context.getExternalFilesDirs(String type)或API Level 低于19的Context.getExternalFilesDir(String type)

3.8 getDownloadsDirectory

  • 存储下载文件的目录的路径,这通常仅与台式机操作系统有关

  • 在Android和iOS上,此函数将引发[UnsupportedError]异常。

四 示例


4.1 代码

Future<Directory?>? _tempDirectory;

Future<Directory?>? _appSupportDirectory;

Future<Directory?>? _appLibraryDirectory;

Future<Directory?>? _appDocumentsDirectory;

Future<Directory?>? _externalDocumentsDirectory;

Future<List?>? _externalStorageDirectories;

Future<List?>? _externalCacheDirectories;

Future<Directory?>? _downloadDirectory;

void _requestTempDirectory() {

setState(() {

_tempDirectory = getTemporaryDirectory();

});

}

Widget _buildDirectory(BuildContext context, AsyncSnapshot<Directory?> snapshot) {

Text text = const Text(’’);

if (snapshot.connectionState == ConnectionState.done) {

if (snapshot.hasError) {

text = Text(‘Error: ${snapshot.error}’);

} else if (snapshot.hasData) {

text = Text(‘path: ${snapshot.data!.path}’);

} else {

text = const Text(‘path unavailable’);

}

}

return Padding(padding: const EdgeInsets.all(16.0), child: text);

}

Widget _buildDirectories(BuildContext context, AsyncSnapshot<List?> snapshot) {

Text text = const Text(’’);

if (snapshot.connectionState == ConnectionState.done) {

if (snapshot.hasError) {

text = Text(‘Error: ${snapshot.error}’);

} else if (snapshot.hasData) {

final String combined = snapshot.data!.map((Directory d) => d.path).join(’, ');

text = Text(‘paths: $combined’);

} else {

text = const Text(‘path unavailable’);

}

}

return Padding(padding: const EdgeInsets.all(16.0), child: text);

}

void _requestAppDocumentsDirectory() {

setState(() {

_appDocumentsDirectory = getApplicationDocumentsDirectory();

});

}

void _requestAppSupportDirectory() {

setState(() {

_appSupportDirectory = getApplicationSupportDirectory();

});

}

void _requestAppLibraryDirectory() {

setState(() {

_appLibraryDirectory = getLibraryDirectory();

});

}

void _requestExternalStorageDirectory() {

setState(() {

_externalDocumentsDirectory = getExternalStorageDirectory();

});

}

void _requestExternalStorageDirectories(StorageDirectory type) {

setState(() {

_externalStorageDirectories = getExternalStorageDirectories(type: type);

});

}

void _requestExternalCacheDirectories() {

setState(() {

_externalCacheDirectories = getExternalCacheDirectories();

});

}

void _requestDownloadDirectory() {

setState(() {

_downloadDirectory = getDownloadsDirectory();

});

}

Center(

child: ListView(

children: [

Padding(padding: const EdgeInsets.all(16.0), child: ElevatedButton(child: const Text(‘Get Temporary Directory’), onPressed: _requestTempDirectory,),),

FutureBuilder<Directory?>(future: _tempDirectory, builder: _buildDirectory),

Padding(padding: const EdgeInsets.all(16.0), child: ElevatedButton(child: const Text(‘Get Application Documents Directory’),

onPressed: _requestAppDocumentsDirectory,),),

FutureBuilder<Directory?>(future: _appDocumentsDirectory, builder: _buildDirectory),

Padding(padding: const EdgeInsets.all(16.0), child: ElevatedButton(child: const Text(‘Get Application Support Directory’),

onPressed: _requestAppSupportDirectory,),),

FutureBuilder<Directory?>(future: _appSupportDirectory, builder: _buildDirectory),

Padding(padding: const EdgeInsets.all(16.0), child: ElevatedButton(child: const Text(‘Get Application Library Directory’),

onPressed: _requestAppLibraryDirectory,)),

FutureBuilder<Directory?>(future: _appLibraryDirectory, builder: _buildDirectory),

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《2019-2021字节跳动Android面试历年真题解析》

**

猜你喜欢

转载自blog.csdn.net/m0_66264673/article/details/122770073