Orientação gerada a partir de informações públicas. Apenas para referência.
O pacote figma é uma biblioteca Dart que fornece uma interface limpa e puramente em Dart para a API do Figma, permitindo que desenvolvedores interajam programaticamente com documentos do Figma. Ele suporta a obtenção de arquivos de design, recuperação de ativos e gerenciamento de componentes em múltiplas plataformas. Ideal para integrar dados do Figma em aplicativos ou ferramentas Flutter, simplifica autenticação e tratamento de solicitações. A biblioteca é mantida ativamente e compatível com Android, iOS, Web, macOS, Windows e Linux.
Casos de uso
Buscando arquivos de design no Figma
Sincronizando tokens de design em aplicativos
Automatizando a extração de ativos
Integrando dados do Figma em pipelines de CI/CD
Ferramentas de colaboração para design de edifícios
Principais recursos
Implementação pura em Dart
Suporte multiplataforma
Tratamento de autenticação
Respostas de API seguras por tipo
Integração fácil com o Flutter
Indicado para
Desenvolvedores Flutter trabalhando com Figma
Ferramentas de sistema de design
fluxos de trabalho CI/CD envolvendo ativos de design
Teams automating design-to-code processes
Considerações
Requer token de acesso pessoal da API do Figma
Limites de taxa se aplicam à API do Figma
Limitado a arquivos públicos ou compartilhados do Figma, a menos que autorizado adequadamente
Não é um cliente completo do Figma, apenas interação com a API
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
figma
A library for interacting with Figma APIs with typed responses and data structures for working with Figma programatically.
Features
🚀 Full Figma API coverage with typed responses
🔒 Support for both API token and OAuth authentication
🔄 Support for variables (both local and published)
🛠️ Comprehensive component and style handling
📱 Export capabilities including PDF format
🧩 Support for component sets and variants
Installation
Add the package to your pubspec.yaml:
dependencies:figma:^7.3.4
Or install it using the Dart package manager:
dart pub add figma
Getting Started
Authentication
To use the Figma API, you'll need an access token. You can obtain one in two ways:
Personal Access Token: Generate from your Figma account settings
OAuth Token: Implement OAuth flow in your application
Basic Usage
import'package:figma/figma.dart';
voidmain() async {
// Initialize the client with your access tokenfinal figma = FigmaClient('your_access_token');
// Get a Figma filefinal file = await figma.getFile('file_key');
// Access file dataprint(file.name);
print(file.lastModified);
}
Working with Files
Retrieving File Information
// Get file with componentsfinal fileWithComponents = await figma.getFileWithNodes(
'file_key',
['node_id_1', 'node_id_2']
);
// Get file stylesfinal styles = await figma.getFileStyles('file_key');
// Get component setsfinal components = await figma.getFileComponentSets('file_key');
// Get local variablesfinal localVars = await figma.getLocalVariables('file_key');
// Get published variablesfinal publishedVars = await figma.getPublishedVariables('file_key');
Component Management
// Get team componentsfinal teamComponents = await figma.getTeamComponents('team_id');
// Get component infofinal componentInfo = await figma.getComponent('component_id');
Comments and Collaboration
// Post a commentawait figma.postComment(
'file_key',
'This is a comment',
clientMetadata: {'key': 'value'}
);
// Get file commentsfinal comments = await figma.getComments('file_key');
Best Practices
Error Handling: The library throws FigmaException for API errors. Always implement proper error handling:
try {
final file = await figma.getFile('file_key');
} onFigmaExceptioncatch (e) {
print('Figma API error: ${e.message}');
}
Resource Management: When working with large files, request only the nodes you need:
// Instead of getting the entire filefinal specificNodes = await figma.getFileNodes(
'file_key',
['specific_node_id']
);
Rate Limiting: Implement appropriate rate limiting in your application to avoid hitting Figma's API limits.
Automation Examples
Export All Frame Images
Future<void> exportAllFrames(String fileKey) async {
final figma = FigmaClient('your_token');
final file = await figma.getFile(fileKey);
final frameIds = file.document.children
.whereType<Frame>()
.map((frame) => frame.id)
.toList();
final images = await figma.getImage(
fileKey,
frameIds,
format: 'png'
);
}
TypeScript/JavaScript Integration
When using this library in Flutter web projects that interact with JavaScript/TypeScript codebases:
// Dartfinal jsonData = await figma.getFile('file_key');
// Convert to JSON string for JS interopfinal jsonString = jsonEncode(jsonData);
// TypeScriptinterfaceFigmaFile {
// Your TypeScript type definitions
}
constfigmaData: FigmaFile = JSON.parse(jsonString);