当学习 Flutter 时,你可能需要参考一些学习文档。
以下是一些值得一读的 Flutter 学习文档:
1.Flutter 官方文档:Flutter 官方文档提供了全面的教程、API 参考和示例,是学习 Flutter 的最佳资源。文档可以在 https://flutter.dev/docs/get-started/intro 中找到。
2.Flutter 教程:Flutter 官方提供了一个基于官方文档的 Flutter 教程,包括 Flutter 的基础知识、应用开发、数据可视化等内容。教程可以在 https://flutter.dev/docs/get-started/tutorial 中找到。
3.Flutter 入门指南:这是一篇适合初学者的 Flutter 入门指南,涵盖了 Flutter 的基础知识、组件、布局、网络、数据存储等内容。指南可以在 https://www.runoob.com/flutter/flutter-tutorial.html 中找到。
4.Flutter 官方示例:Flutter 官方提供了一些示例,包括日历、天气、计算器、游戏等。这些示例可以帮助你快速入门 Flutter,同时也可以作为你自己应用的参考。
示例可以在 https://github.com/flutter/flutter/tree/master/examples 中找到,https://flutter.github.io/samples/#。
5.Flutter 实战指南:这是一篇面向实战的 Flutter 指南,介绍了如何使用 Flutter 构建 Web 应用、React Native 应用、小程序等。指南可以在 https://www.jianshu.com/p/4f3d8e0f6a31 中找到。
6.学习路线
添加插件命令:flutter pub add “插件名称”
横线组件:Divider()。
和原生Android交互,Android端
private static final String BATTERY_CHANNEL = "samples.flutter.io/battery";
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
new MethodChannel(flutterEngine.getDartExecutor(), BATTERY_CHANNEL).setMethodCallHandler(
new MethodCallHandler() {
@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("getBatteryLevel")) {
System.out.println("onMethodCall");
// result.success("android数据");//正常数据
result.error("android报错数据", "数据内容", null);//会走抛异常数据
} else {
result.notImplemented();
}
}
}
);
}
}
flutter端
_requestAndroid() async {
var msg=await PlatformChannel.getMessage();
print(msg);
}
class PlatformChannel {
static const platform = const MethodChannel('samples.flutter.io/battery');
static Future<String> getMessage() async {
String message = await platform.invokeMethod('getBatteryLevel').toString();
print("PlatformChannel=" + message);
return message;
}
}
7.遇到问题:
- 新增文件后,提示新增成功了,但是存储卡找不到文件,增删查改都可以,但是就是在内存卡里看不到。
- sdk和开源不匹配,修改sdk版本方法。
- 权限申请拒绝后,再次打开不再弹窗。
- setState()使用场景,有些时候不起作用:使用StatefulBuilder。
StatefulBuilder(
builder: (BuildContext context, StateSetter setState) {
return ;
},
), - gridview数据不刷新问题,修改了数据后死活不刷新。
解决方案:gridview控件里面添加key: UniqueKey()。
6.嵌入webview_flutter插件后使用报错,报错内容:Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null)
原因:原生Android交互,Android端和次功能有冲突,把Android端方法注释(日后找到方法再来更新)