Skip to main content

can_bus_toolkit 0.1.0 copy "can_bus_toolkit: ^0.1.0" to clipboard
can_bus_toolkit: ^0.1.0 copied to clipboard

PlatformAndroid

CAN bus toolkit for Android over USB OTG: PCAN-USB and SLCAN adapters, candump logging, ISO-TP, OBD-II and UDS clients, and DBC signal decoding.

example/lib/main.dart

import 'package:flutter/material.dart';

import 'app/app_state.dart';
import 'app/saved_commands.dart';
import 'screens/dbc_screen.dart';
import 'screens/devices_screen.dart';
import 'screens/logs_screen.dart';
import 'screens/monitor_screen.dart';
import 'screens/obd_screen.dart';
import 'screens/send_screen.dart';
import 'screens/stats_screen.dart';
import 'screens/widgets.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final state = AppState(await Settings.load());
  runApp(CanBusToolkitExampleApp(state: state));
  await state.init();
}

/// Demo app for can_bus_toolkit.
class CanBusToolkitExampleApp extends StatelessWidget {
  /// Creates the app around [state].
  const CanBusToolkitExampleApp({super.key, required this.state});

  /// Shared app state.
  final AppState state;

  @override
  Widget build(BuildContext context) {
    return AppScope(
      state: state,
      child: MaterialApp(
        title: 'CAN Bus Toolkit',
        theme: ThemeData(colorSchemeSeed: Colors.indigo, useMaterial3: true),
        darkTheme: ThemeData(
          colorSchemeSeed: Colors.indigo,
          brightness: Brightness.dark,
          useMaterial3: true,
        ),
        home: const HomeScreen(),
      ),
    );
  }
}

class _Destination {
  const _Destination(this.label, this.icon, this.builder);
  final String label;
  final IconData icon;
  final Widget Function() builder;
}

/// Drawer navigation over all screens; each keeps its state.
class HomeScreen extends StatefulWidget {
  /// Creates the home screen.
  const HomeScreen({super.key});

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  static final _destinations = [
    _Destination('Devices', Icons.usb, DevicesScreen.new),
    _Destination('Monitor', Icons.list_alt, MonitorScreen.new),
    _Destination('Send', Icons.send, SendScreen.new),
    _Destination('Statistics', Icons.speed, StatsScreen.new),
    _Destination('Logs', Icons.save_alt, LogsScreen.new),
    _Destination('OBD-II', Icons.directions_car, ObdScreen.new),
    _Destination('DBC', Icons.table_chart, DbcScreen.new),
  ];

  int _index = 0;
  late final List<Widget> _pages = [for (final d in _destinations) d.builder()];

  @override
  Widget build(BuildContext context) {
    final state = AppScope.of(context);
    return Scaffold(
      appBar: AppBar(
        title: Text(_destinations[_index].label),
        actions: [
          ListenableBuilder(
            listenable: state,
            builder: (context, _) => Padding(
              padding: const EdgeInsets.only(right: 12),
              child: BusStatusChip(state: state),
            ),
          ),
        ],
      ),
      drawer: NavigationDrawer(
        selectedIndex: _index,
        onDestinationSelected: (i) {
          setState(() => _index = i);
          Navigator.of(context).pop();
        },
        children: [
          const Padding(
            padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
            child: Text(
              'CAN Bus Toolkit',
              style: TextStyle(fontWeight: FontWeight.w600),
            ),
          ),
          for (final d in _destinations)
            NavigationDrawerDestination(
              icon: Icon(d.icon),
              label: Text(d.label),
            ),
        ],
      ),
      body: SafeArea(
        child: IndexedStack(index: _index, children: _pages),
      ),
    );
  }
}
0
likes
160
points
54
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

CAN bus toolkit for Android over USB OTG: PCAN-USB and SLCAN adapters, candump logging, ISO-TP, OBD-II and UDS clients, and DBC signal decoding.

Repository (GitHub)
View/report issues

Topics

#can-bus #obd #automotive #usb #iot

License

MIT (license)

Dependencies

clock, flutter, meta

More

Packages that depend on can_bus_toolkit

Packages that implement can_bus_toolkit