flutter_pub_get
Install Flutter project dependencies by running pub get in the specified working directory to resolve and fetch required packages.
Instructions
Install Flutter project dependencies (pub get)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | Yes | Working directory (Flutter project root) |
Implementation Reference
- src/tools/flutter.ts:837-864 (handler)The handler function executes the 'flutter pub get' command. It validates the input using FlutterPubGetSchema, ensures the directory is a valid Flutter project, runs the command with a 5-minute timeout, and returns structured results including output, errors, exit code, and duration.
handler: async (args: any) => { const validation = FlutterPubGetSchema.safeParse(args); if (!validation.success) { throw new Error(`Invalid request: ${validation.error.message}`); } const { cwd } = validation.data; // Validate that it's a Flutter project await validateFlutterProject(cwd); const result = await processExecutor.execute('flutter', ['pub', 'get'], { cwd, timeout: 300000, // 5 minutes timeout for pub get }); return { success: true, data: { projectPath: cwd, exitCode: result.exitCode, output: result.stdout, errors: result.stderr, duration: result.duration, success: result.exitCode === 0, }, }; } - src/tools/flutter.ts:119-121 (schema)Zod schema for validating the tool's input parameters. Requires a 'cwd' string (working directory of the Flutter project).
const FlutterPubGetSchema = z.object({ cwd: z.string().min(1), }); - src/tools/flutter.ts:827-865 (registration)Registers the 'flutter_pub_get' tool in the tools Map within createFlutterTools function. Includes name, description, JSON inputSchema mirroring the Zod schema, and references the handler function.
tools.set('flutter_pub_get', { name: 'flutter_pub_get', description: 'Install Flutter project dependencies (pub get)', inputSchema: { type: 'object', properties: { cwd: { type: 'string', minLength: 1, description: 'Working directory (Flutter project root)' } }, required: ['cwd'] }, handler: async (args: any) => { const validation = FlutterPubGetSchema.safeParse(args); if (!validation.success) { throw new Error(`Invalid request: ${validation.error.message}`); } const { cwd } = validation.data; // Validate that it's a Flutter project await validateFlutterProject(cwd); const result = await processExecutor.execute('flutter', ['pub', 'get'], { cwd, timeout: 300000, // 5 minutes timeout for pub get }); return { success: true, data: { projectPath: cwd, exitCode: result.exitCode, output: result.stdout, errors: result.stderr, duration: result.duration, success: result.exitCode === 0, }, }; } }); - src/tools/flutter.ts:158-169 (helper)Helper function used by the handler to validate that the provided cwd is a valid Flutter project by checking for pubspec.yaml with a 'flutter:' section.
const validateFlutterProject = async (cwd: string): Promise<void> => { const pubspecPath = path.join(cwd, 'pubspec.yaml'); try { await fs.access(pubspecPath); const pubspecContent = await fs.readFile(pubspecPath, 'utf8'); if (!pubspecContent.includes('flutter:')) { throw new Error(`Directory does not appear to be a Flutter project. No flutter section found in ${pubspecPath}`); } } catch { throw new Error(`pubspec.yaml not found. Flutter project must contain pubspec.yaml at: ${pubspecPath}`); } };