anki_connect_ios 1.0.0
anki_connect_ios: ^1.0.0 copied to clipboard
A simple and convenient Flutter package for connecting to AnkiMobile on iOS. Add cards to decks with ease using URL schemes.
example/lib/main.dart
import 'package:anki_connect_ios_example/models/app_state.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'blocs/app_bloc.dart';
import 'blocs/setup_bloc.dart';
import 'blocs/card_bloc.dart';
import 'repositories/anki_repository.dart';
import 'screens/setup_screen.dart';
import 'screens/add_card_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Anki Connect iOS Example',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
useMaterial3: true,
),
home: MultiRepositoryProvider(
providers: [
RepositoryProvider(
create: (context) => AnkiRepository(),
),
],
child: MultiBlocProvider(
providers: [
BlocProvider(
create: (context) => AppBloc(),
),
],
child: const MainScreen(),
),
),
);
}
}
class MainScreen extends StatelessWidget {
const MainScreen({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<AppBloc, AppState>(
builder: (context, appState) {
if (!appState.isSetup) {
return BlocProvider(
create: (context) => SetupBloc(
ankiRepository: context.read<AnkiRepository>(),
)..add(const SetupEvent.checkAnkiMobile()),
child: const SetupScreen(),
);
}
return BlocProvider(
create: (context) => CardBloc(
ankiRepository: context.read<AnkiRepository>(),
selectedDeck: appState.selectedDeck!,
),
child: AddCardScreen(
selectedDeck: appState.selectedDeck!,
),
);
},
);
}
}