Flutter未知功能插件dolphinsr_dart的探索使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter未知功能插件dolphinsr_dart的探索使用

DolphinSR_Dart 简介

Build Status

DolphinSR_Dart 是基于Yodaiken编写的JavaScript版本的DolphinSR算法的一个移植版本。它实现了间隔重复(Spaced Repetition),特别是采用了Anki对SM2算法的修改,包括:

  • 新卡片学习模式
  • 忘记卡片后的重新学习模式
  • 将自评等级从6个减少到4个
  • 将迟到因素纳入卡片调度
  • Anki默认配置选项

与Anki的算法相比,DolphinSR_Dart在以下方面有所不同:

  • 改进了对无序添加复习的支持(例如由于网络延迟)
  • 内部数据结构完全不同(DolphinSR_Dart主要采用函数式编程风格编写,以简化测试和调试,不依赖于存储计算的数据或任何SQL数据库)
  • 只有一种类型的卡片

安装

要使用此包,请在pubspec.yaml文件中添加如下依赖:

dependencies:
  dolphinsr_dart: latest_version

快速开始

下面是一个简单的例子来演示如何使用DolphinSR_Dart库。

示例代码

import 'package:dolphinsr_dart/dolphinsr_dart.dart';

void main() {
  final reviews = <Review>[];

  final dolphin = DolphinSR();

  // 添加主条目(Master Entries)
  dolphin.addMasters(<Master>[
    Master(
      id: '1',
      fields: <String>['คน', 'person'],
      combinations: <Combination>[
        Combination(front: <int>[0], back: <int>[1]),
        Combination(front: <int>[1], back: <int>[0]),
      ],
    ),
    Master(
      id: '2',
      fields: <String>['คบ', 'To date'],
      combinations: <Combination>[
        Combination(front: <int>[0], back: <int>[1]),
        Combination(front: <int>[1], back: <int>[0]),
      ],
    )
  ]);
  
  // 添加复习记录
  dolphin.addReviews(reviews);

  // 获取统计信息
  var stats = dolphin.summary(); // => { due: 0, later: 0, learning: 2, overdue: 0 }
  printStats(stats);

  // 获取下一张卡片进行复习
  var card = dolphin.nextCard()!;
  printCard(card);
  
  // 创建一个复习记录,并添加到复习列表中
  var review = Review(
      master: card.master,
      combination: card.combination,
      ts: DateTime.now(),
      rating: Rating.Hard);
  dolphin.addReviews(<Review>[review]);

  // 继续获取并处理更多的卡片...
  for (var i = 0; i < 5; i++) {
    card = dolphin.nextCard()!;
    printCard(card);
    
    review = Review(
        master: card.master,
        combination: card.combination,
        ts: DateTime.now(),
        rating: i % 2 == 0 ? Rating.Easy : Rating.Hard);
    dolphin.addReviews(<Review>[review]);

    stats = dolphin.summary();
    printStats(stats);
  }
}

// 辅助函数用于打印卡片信息
void printCard(DRCard card) {
  print(
      '${card.master}-${card.back}-${card.front}-${card.combination!.back}-${card.combination!.front} - ${card.lastReviewed} - ${card.dueDate}');
}

// 辅助函数用于打印统计数据
void printStats(Stats stats) {
  print('${stats.due}-${stats.later}-${stats.learning}-${stats.overdue}');
}

这段代码展示了如何创建一个DolphinSR实例,添加一些主条目(如单词及其翻译),然后通过循环模拟用户复习这些条目的过程。每次复习后,程序会根据用户的评分更新卡片的状态,并输出当前的学习进度统计信息。

请注意,实际应用中您可能需要更复杂的功能,比如持久化存储复习记录、支持更多种类型的卡片等。此外,还可以根据需要调整复习难度的评估逻辑,以更好地适应具体的应用场景。


更多关于Flutter未知功能插件dolphinsr_dart的探索使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter未知功能插件dolphinsr_dart的探索使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在探索和使用Flutter的未知功能插件dolphinsr_dart时,首先确保你已经将该插件添加到你的Flutter项目中。假设dolphinsr_dart是一个已经发布在pub.dev上的插件,或者你已经通过其他方式获取到了它的源代码。

以下是一个基本的步骤和代码示例,展示如何在Flutter项目中使用dolphinsr_dart插件(请注意,由于dolphinsr_dart是一个假设的插件名称,具体的API和用法可能会有所不同,这里只是提供一个通用的探索和使用插件的框架):

  1. 添加依赖: 在你的pubspec.yaml文件中添加dolphinsr_dart作为依赖项。如果它是一个公开的插件,你可以像下面这样添加:

    dependencies:
      flutter:
        sdk: flutter
      dolphinsr_dart: ^x.y.z  # 替换为实际的版本号
    

    然后运行flutter pub get来安装依赖。

  2. 导入插件: 在你需要使用dolphinsr_dart功能的Dart文件中导入该插件。

    import 'package:dolphinsr_dart/dolphinsr_dart.dart';
    
  3. 使用插件的功能: 根据dolphinsr_dart插件提供的API文档(通常可以在pub.dev页面或插件的README文件中找到),使用其提供的功能。以下是一个假设的示例,展示如何调用插件的某个方法:

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('Dolphinsr Dart Example'),
            ),
            body: Center(
              child: DolphinWidget(),
            ),
          ),
        );
      }
    }
    
    class DolphinWidget extends StatefulWidget {
      @override
      _DolphinWidgetState createState() => _DolphinWidgetState();
    }
    
    class _DolphinWidgetState extends State<DolphinWidget> {
      String result = '';
    
      @override
      void initState() {
        super.initState();
        // 假设dolphinsr_dart有一个名为performAction的异步方法
        _useDolphinsrDart();
      }
    
      Future<void> _useDolphinsrDart() async {
        try {
          // 调用插件的方法,并等待结果
          var response = await DolphinsrDart.performAction();
          setState(() {
            result = 'Action performed with result: $response';
          });
        } catch (e) {
          setState(() {
            result = 'Error performing action: $e';
          });
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(result),
          ],
        );
      }
    }
    

    在上面的示例中,我们假设dolphinsr_dart插件有一个名为performAction的异步方法,该方法返回一个结果。我们在initState中调用该方法,并在UI中显示结果或错误信息。

  4. 运行应用: 使用flutter run命令运行你的Flutter应用,并观察结果。

请注意,由于dolphinsr_dart是一个假设的插件名称,上述代码中的DolphinsrDart类和performAction方法都是虚构的。你需要根据实际的dolphinsr_dart插件文档来调整代码。如果dolphinsr_dart不是一个公开的插件,你可能需要直接引用其源代码,并相应地调整你的项目结构。

回到顶部