firebase_ml_model_downloader 0.3.1+6 firebase_ml_model_downloader: ^0.3.1+6 copied to clipboard
A Flutter plugin allowing you to use Firebase Ml Model Downloader.
// Copyright 2022, the Chromium project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_ml_model_downloader/firebase_ml_model_downloader.dart';
import 'package:flutter/material.dart';
import 'firebase_options.dart';
const kModelName = "mobilenet_v1_1_0_224";
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
initWithLocalModel();
}
FirebaseCustomModel? model;
/// Initially get the lcoal model if found, and asynchronously get the latest one in background.
initWithLocalModel() async {
final newModel = await FirebaseModelDownloader.instance.getModel(
kModelName, FirebaseModelDownloadType.localModelUpdateInBackground);
setState(() {
model = newModel;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(primarySwatch: Colors.amber),
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
width: double.infinity,
child: Card(
margin: EdgeInsets.zero,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: model != null
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Model name: ${model!.name}'),
Text('Model size: ${model!.size}'),
],
)
: const Text("No local model found"),
),
),
),
const SizedBox(height: 20),
Row(
children: [
Expanded(
child: ElevatedButton(
onPressed: () async {
final newModel =
await FirebaseModelDownloader.instance.getModel(
kModelName,
FirebaseModelDownloadType.latestModel);
setState(() {
model = newModel;
});
},
child: const Text('Get latest model'),
),
),
const SizedBox(width: 20),
Expanded(
child: ElevatedButton(
onPressed: () async {
await FirebaseModelDownloader.instance
.deleteDownloadedModel(kModelName);
setState(() {
model = null;
});
},
child: const Text('Delete local model'),
),
),
],
),
],
),
),
),
),
);
}
}