请使用 rootBundle 加载资源https://flutter.dev/docs/development/ui/assets-and-images https://flutter.dev/docs/development/ui/assets-and-images
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('assets/config.json');
}
如果您尝试加载 webview 的 html 文件,请参考此https://inducesmile.com/google-flutter/how-load-a-local-html-file-in-flutter-webview/ https://inducesmile.com/google-flutter/how-load-a-local-html-file-in-flutter-webview/
Future<String> _loadLocalHTML() async {
return await rootBundle.loadString('assets/html_code.html');
}
参考文档中的代码
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'dart:async';
class LoadHTMLFileToWEbView extends StatefulWidget {
@override
_LoadHTMLFileToWEbViewState createState() => _LoadHTMLFileToWEbViewState();
}
class _LoadHTMLFileToWEbViewState extends State<LoadHTMLFileToWEbView> {
@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: _loadLocalHTML(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return WebviewScaffold(
appBar: AppBar(title: Text("Load HTM file in WebView")),
withJavascript: true,
appCacheEnabled: true,
url: new Uri.dataFromString(snapshot.data, mimeType: 'text/html')
.toString(),
);
} else if (snapshot.hasError) {
return Scaffold(
body: Center(
child: Text("${snapshot.error}"),
),
);
}
return Scaffold(
body: Center(child: CircularProgressIndicator()),
);
},
);
}
}
Future<String> _loadLocalHTML() async {
return await rootBundle.loadString('assets/html_code.html');
}