Orientação gerada a partir de informações públicas. Apenas para referência.
Uma biblioteca Dart simples e robusta para se conectar a servidores FTP, permitindo transferências de arquivos sem problemas em múltiplas plataformas. Oferece uma API direta para interagir com servidores FTP remotos, suportando operações comuns como upload, download, listagem de arquivos e gerenciamento de diretórios. Projetada para confiabilidade e facilidade de uso, integra-se suavemente em aplicativos Flutter voltados para Android, iOS, macOS, Windows e Linux. Ideal para aplicativos que exigem manipulação segura ou automatizada de arquivos por meio do FTP.
Casos de uso
Transferência de arquivos entre aplicativo e servidor FTP
Sistemas de backup automatizados
Gerenciamento de arquivos remotos em aplicativos
Sincronizando dados do aplicativo com armazenamento FTP
Baixando arquivos de configuração do FTP
Principais recursos
Suporte multiplataforma
API simples e intuitiva
Tratamento robusto de erros
Suporta upload e download de arquivos
Listagem e navegação de diretórios
Indicado para
Desenvolvedores de aplicativos de sincronização de arquivos
Aplicativos que precisam de acesso remoto a arquivos
Serviços de backend usando FTP
Dispositivos IoT gerenciando arquivos por meio de FTP
Projetos educacionais sobre protocolos de rede
Considerações
Requer conexão estável com a internet
Sem criptografia embutida (use o FTPS se necessário)
Limitado apenas ao protocolo FTP
Pode ser necessário configurar o firewall
Não adequado para ambientes de alta segurança sem medidas adicionais
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Flutter FTP Connect
Flutter simple and robust dart FTP Connect Library to interact with FTP and SFTP Servers.
//Get directory content
ftpConnect.listDirectoryContent();
//Create directory
ftpConnect.makeDirectory('newDir');
//Change directory
ftpConnect.changeDirectory('moveHereDir');
//get current directory
ftpConnect.currentDirectory();
//Delete directory
ftpConnect.deleteDirectory('dirToDelete');
//Delete a non-empty directory (recursively)
ftpConnect.deleteNonEmptyDirectory('dirToDelete');
//check for directory existance
ftpConnect.checkFolderExistence('dirToCheck');
//create a directory if it does not exist
ftpConnect.createFolderIfNotExist('dirToCreate');
//Upload a local directory recursively to the server
ftpConnect.uploadDirectory(Directory('localDir'), 'remoteDir');
//Download a remote directory recursively
ftpConnect.downloadDirectory('remoteDir', Directory('localDir'));
File functions:
//rename file
ftpConnect.rename('test1.txt', 'test2.txt');
//file size
ftpConnect.sizeFile('test1.txt');
//file existence
ftpConnect.existFile('test1.txt');
//delete file
ftpConnect.deleteFile('test2.zip');
//upload in-memory bytes (no local file needed)
ftpConnect.uploadData(Uint8List.fromList([1, 2, 3]), 'remote.bin');
//download a remote file into memory as bytesfinalUint8List bytes = await ftpConnect.downloadToBytes('remote.bin');
Parameters
Common parameters (FTPConnect and SFTPConnect)
Property
Description
host
Hostname or IP Address
port
Port number (FTP defaults to 21, FTPS to 990, SFTP to 22)
user
Username (Defaults to anonymous)
pass
Password if not anonymous login
showLog
Enable Debug Logging (Defaults to false)
logger
Custom logger
timeout
Timeout in seconds to wait for responses (Defaults to 30)
FTP-only parameters (FTPConnect)
Property
Description
securityType
SecurityType.ftp / ftpes / ftps (Defaults to ftp)
SFTP-only parameters (SFTPConnect)
Property
Description
privateKey
PEM/OpenSSH private key content, used instead of pass
SFTP is provided by the SFTPConnect class, powered by the pure-Dart
dartssh2 package. Both FTPConnect and
SFTPConnect implement the same FileTransferClient interface, so they share
identical method names/signatures and you can swap one for the other by changing
only the instantiated class.
ℹ️ dartssh2 is written in pure Dart, so SFTPConnect works on every
platform supported by Dart/Flutter (except web, which has no raw TCP sockets).
If this plugin was useful to you, helped you to deliver your app, saved you a lot of time, or you just want to support the project, I would be very grateful if you buy me a cup of coffee.