code_forge 10.1.0 copy "code_forge: ^10.1.0" to clipboard
code_forge: ^10.1.0 copied to clipboard

A sophisticated code editor package for flutter backed by rust backend.

example/lib/main.dart

import 'dart:io';
import 'package:example/finder.dart';
import 'package:path/path.dart' as p;
import 'package:code_forge/code_forge.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:re_highlight/languages/dart.dart';
import 'package:re_highlight/styles/github-dark.dart';

Future<void> main() async {
  await RustLib.init();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final undoController = UndoRedoController();
  final absFilePath = p.join(Directory.current.path, "lib/big_code.dart");
  CodeForgeController? codeController;

  Future<LspConfig> getLsp() async {
    final absWorkspacePath = p.join(Directory.current.path, "lib");
    final data = await LspStdioConfig.start(
      executable: "dart",
      args: ["language-server", "--protocol=lsp"],
      workspacePath: absWorkspacePath,
      languageId: "dart",
    );
    return data;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            codeController?.setGitDiffDecorations(
              addedRanges: [(1, 5), (10, 25)],
              removedRanges: [
                (
                  afterLine: 29,
                  content:
                      'final x = 10;\nfinal y = 20;\nprint("removed line");',
                ),
              ],
            );
            codeController?.scrollToLine(30);
          },
        ),
        body: SafeArea(
          child: CodeForge(
            undoController: undoController,
            language: langDart,
            editorTheme: githubDarkTheme,
            controller: codeController,
            textStyle: GoogleFonts.jetBrainsMono(),
            filePath: absFilePath,
            tabSize: 4,
            matchHighlightStyle: const MatchHighlightStyle(
              currentMatchStyle: TextStyle(backgroundColor: Color(0xFFFFA726)),
              otherMatchStyle: TextStyle(backgroundColor: Color(0x55FFFF00)),
            ),
            finderBuilder: (c, controller) =>
                FindPanelView(controller: controller),
            customCodeSnippets: [
              CustomCodeSnippet(
                label: 'if',
                value: 'if (condition) {\n  \n}',
                cursorLocations: {4},
              ),
              CustomCodeSnippet(
                label: 'if-else',
                value: 'if (condition) {\n  \n} else {\n  \n}',
                cursorLocations: {18, 31},
              ),
            ],
          ),
        ),
      ),
    );
  }
}
58
likes
0
points
16.4k
downloads

Publisher

unverified uploader

Weekly Downloads

A sophisticated code editor package for flutter backed by rust backend.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, flutter_colorpicker, flutter_rust_bridge, markdown_widget, re_highlight, vector_math, web_socket_channel

More

Packages that depend on code_forge

Packages that implement code_forge