// Based on https://github.com/shaqian/flutter_realtime_detection import 'package:flutter/material.dart' show BuildContext, MediaQuery, Scaffold, Size, Stack, State, StatefulWidget, Widget; import 'package:camera/camera.dart'; import 'package:tflite/tflite.dart'; import 'dart:math' as math; import 'camera.dart'; import 'bndbox.dart'; class HomePage extends StatefulWidget { final List cameras; HomePage(this.cameras); @override _HomePageState createState() => new _HomePageState(); } class _HomePageState extends State { List _recognitions; int _imageHeight = 0; int _imageWidth = 0; @override void initState() { super.initState(); loadModel(); } void loadModel() async { await Tflite.loadModel( model: "assets/routespotter_model.tflite", labels: "assets/labels.txt"); } setRecognitions(recognitions, imageHeight, imageWidth) { setState(() { _recognitions = recognitions; _imageHeight = imageHeight; _imageWidth = imageWidth; }); } @override Widget build(BuildContext context) { Size screen = MediaQuery.of(context).size; return Scaffold( body: Stack( children: [ Camera( widget.cameras, setRecognitions, ), BndBox( _recognitions == null ? [] : _recognitions, math.max(_imageHeight, _imageWidth), math.min(_imageHeight, _imageWidth), screen.height, screen.width), ], ), ); } }