Flutter 从Flatter中的资源中的文件读取字符串后,逐行读取字符串

Flutter 从Flatter中的资源中的文件读取字符串后,逐行读取字符串,flutter,dart,Flutter,Dart,我可以成功读取文件,但只处理了一部分行。正如您所看到的:使用string类的split方法分割原始字符串,我不知道为什么。有没有其他方法可以将字符串拆分为行 String rawStr = rootBundle.loadString('assets/sql/create_tables'); List<String> list = rawStr.split("\n"); list.map( (e) { print("> $e"); db.execute(e); }

我可以成功读取文件,但只处理了一部分行。正如您所看到的:使用string类的split方法分割原始字符串,我不知道为什么。有没有其他方法可以将字符串拆分为行

String rawStr = rootBundle.loadString('assets/sql/create_tables');
List<String> list = rawStr.split("\n");
list.map( (e) {
    print("> $e");
    db.execute(e);
});
String rawStr=rootBundle.loadString('assets/sql/create_tables');
List List=rawStr.split(“\n”);
list.map((e){
打印(“>$e”);
db.执行(e);
});
我希望所有的线路都能处理好

逐行从资产和流程中读取的代码应如下所示。

    String rawStr = rootBundle.loadString('assets/sql/create_tables');
Iterable<String> list = LineSplitter.split(rawStr);
list.forEach((e){
if (e?.isEmpty ?? true) {
    //Do nothing
} else {
    print("> $e");
    db.execute(e);
}
});
String rawStr=rootBundle.loadString('assets/sql/create_tables');
Iterable list=LineSplitter.split(rawStr);
列表.forEach((e){
如果(e?.isEmpty??true){
//无所事事
}否则{
打印(“>$e”);
db.执行(e);
}
});
尝试使用
forEach()
,如下所示

list.forEach((e){
   print("> $e");
   db.execute(e);
});

祝你好运。

以下是使用LineSplitter读取字符串的方法:

  void _loadFile() async {
    String data = await rootBundle.loadString('assets/myfile.txt');
    LineSplitter.split(data).forEach((line) => print('$line'));
  }

用数据加载功能替换“打印”。

我按照您的建议更改了代码,可以正常工作。非常感谢你!我用一种新方法分割字符串:LineSplitter.split