om_console 0.0.17 copy "om_console: ^0.0.17" to clipboard
om_console: ^0.0.17 copied to clipboard

A flutter console widget showing in the ui like vscode console

example/lib/main.dart

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:om_console/console_wrapper.dart';
import 'package:om_console/om_console.dart';

void main() {
  Console.consoleLisitener(() {
    runApp(const MyApp());
  });
}

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

  @override
  Widget build(BuildContext context) {
    return ConsoleWrapper(
      showConsole: true,
      child: MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
            useMaterial3: true,
          ),
          home: const MyHomePage(title: "My Flutter HomePage")),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String generateSqlQuery(String spName, Map<String, dynamic> params) {
    // Start building the SQL query
    StringBuffer sqlQuery = StringBuffer();

    // Add USE statement if needed (you might want to make this configurable)
    sqlQuery.writeln("USE [Quick]");
    sqlQuery.writeln("GO");

    // Declare variables
    sqlQuery.writeln("DECLARE @return_value int,");
    sqlQuery.writeln("\t\t@State int,");
    sqlQuery.writeln("\t\t@Message nvarchar(500)");

    // Initialize state variables
    sqlQuery.writeln("SELECT\t@State = 0");
    sqlQuery.writeln("SELECT\t@Message = N'0'");

    // Start EXEC statement
    sqlQuery.write("EXEC\t@return_value = $spName");

    // Add parameters
    List<String> paramStrings = [];
    params.forEach((key, value) {
      String paramValue = value is String
          ? "N'${value.replaceAll("'", "''")}'"
          : value.toString();
      paramStrings.add("@$key = $paramValue");
    });

    if (paramStrings.isNotEmpty) {
      sqlQuery.writeln();
      sqlQuery.writeln("\t\t${paramStrings.join(',\n\t\t')}");
    }

    // Add return statements
    sqlQuery.writeln();
    sqlQuery.writeln("SELECT\t@State as N'@State',");
    sqlQuery.writeln("\t\t@Message as N'@Message'");
    sqlQuery.writeln("SELECT\t'Return Value' = @return_value");
    sqlQuery.writeln("GO");

    return sqlQuery.toString();
  }

// Example usage function
  void example() {
    String spName = "[GRP].[APIGroupOperation]";
    Map<String, dynamic> params = {
      "Operation": "Get Left-Right Side Group",
      "User": "a.abdelghafar",
      "LastChatID": 2003305,
      "local": false,
      "UnreadList": "0",
      "version": "1.0.0.0",
      "firebaseToken": "",
      "iosVersion": "",
      "androidVersion": "",
      "webVersion": ""
    };

    String sqlQuery = generateSqlQuery(spName, params);
    print(sqlQuery);
  }

  void logPress() {
    for (int i = 0; i < 100; i++) {
      print(generateRandomString(500));
    }
    Console.logSql(
      dbName: "Quick",
      params: {
        "Operation": "Get Left-Right Side Group",
        "User": "a.abdelghafar",
        "LastChatID": 2003305,
        "local": false,
        "UnreadList": "0",
        "version": "1.0.0.0",
        "firebaseToken": "",
        "iosVersion": "",
        "androidVersion": "",
        "webVersion": ""
      },
      spName: "[GRP].[APIGroupOperation]",
    );
    Console.logHttp(
      url: "www.example.com",
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        "Authorization": "Bearer wawXHzQw35NTwyJ9CSLVWKKd4vv4pNq2lFKrEZPp9EG",
        "X-API-Key": "12345",
        "X-Version": "1.0.0",
        "X-Platform": "flutter",
        "X-Locale": "en_US",
        "X-Screen-Width": "${MediaQuery.of(context).size.width}",
        "X-Screen-Height": "${5000}",
      },
      body: {
        "device_id": "device_id_123",
        "app_version": "1.0.0",
        "locale": "en_US",
        "platform": "flutter",
      },
      textColor: Colors.black,
      statusCode: 200,
      response: {
        "message": "Success",
        "message1": "Success",
        "message2": "Success",
        "message3": "Success",
        "message4": "Success",
        "message5": "Success",
        "message6": "Success",
        "message7": "Success",
        "message8": "Success",
        "message9": "Success",
        "message10": "Success",
        "message11": "Success",
        "message12": "Success",
      },
    );
  }

  String generateRandomString(int length) {
    const characters =
        'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    final random = Random();
    return List.generate(
            length, (index) => characters[random.nextInt(characters.length)])
        .join();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SizedBox(
              width: 200,
              height: 50,
              child: MaterialButton(
                onPressed: () {
                  logPress();
                },
                color: Colors.purple,
                child: const Text(
                  "Log To Console",
                  style: TextStyle(color: Colors.white),
                ),
              ),
            )
          ],
        ),
      ),
    );
  }
}
6
likes
0
points
111
downloads

Publisher

unverified uploader

Weekly Downloads

A flutter console widget showing in the ui like vscode console

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, flutter_localizations, localization, scrollable_positioned_list

More

Packages that depend on om_console