Flutter 插件
GPS传感器: Geolocator 插件
相机: Image Picker 插件
Facebook登录: flutter_facebook_login 插件
如何自定义插件?
参阅 developing packages and plugins
Flutter 插件的架构很像 Android 中使用 Event bus:发出消息,让接收者处理并返回结果。这种情况下,接收者运行在 Android 或 iOS 本地。
如何使用 NDK ?
如果当前 Android 应用程序使用了 NDK,那么可以通过构建自定义插件来间接实现 NDK 在 Flutter 应用程序中的复用。
自定义插件首先会与可以调用 native 方法的 Android 应用程序交互,当响应完成,便会返回消息给 Flutter 并呈现结果。
目前不支持从 Flutter 直接调用 native 代码。
主题
Flutter 实现的 Material Design 风格能够满足大部分对样式和主题的需求。通过顶层 Widget 来声明主题。
WidgetApp:普通。
MaterialApp:基于 WidgetApp ,Material 风格,更丰富。
相同点:都可以作为程序入口的 top level widget。
//示例
class SampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Sample App',
theme: ThemeData(
primarySwatch: Colors.blue,
textSelectionColor: Colors.red
),
home: SampleAppPage(),
);
}
}
数据库与本地存储
如何使用 Shared Preferences ?
通过包装了 Shared Preferences 和 NSUserDefaults(iOS)功能的插件 Shared_Preferences 来实现键值对存储。
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: RaisedButton(
onPressed: _incrementCounter,
child: Text('Increment Counter'),
),
),
),
),
);
}
_incrementCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
int counter = (prefs.getInt('counter') ?? 0) + 1;
print('Pressed $counter times.');
prefs.setInt('counter', counter);
}
如何使用 SQLite ?
通过 SQFlite 插件使用 SQLite
功能。
通知
可以通过 Firebase_Messaging 插件 实现功能。
网友评论