Flutter核心库services详解
Flutter核心库services提供了许多与系统服务相关的功能,例如访问设备信息、访问系统剪贴板、访问系统共享文件夹等。它包含以下子库:
- android_intent:在Android上启动Activity并传递参数;
- image_picker:从相册或相机中获取图片;
- platform_channel:在Flutter应用程序和原生代码之间进行通信;
- shared_preferences:用于在应用程序中存储小量的键值对数据;
- url_launcher:用于在设备上启动URL;
- webview_flutter:内置WebView浏览器。
这些子库的使用方式都比较简单,可以根据自己的需求选择使用。例如,如果我们想要在Flutter应用程序中启动一个URL,我们可以使用url_launcher子库的launch()方法:
import 'package:url_launcher/url_launcher.dart';
// 启动URL
_launchURL() async {
const url = 'https://www.example.com';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
在上面的示例中,_launchURL()方法将启动一个名为 “https://www.example.com”
的URL。如果可以启动该URL,则会在设备上打开默认的浏览器并显示该URL,否则会抛出一个异常。
以下是一个使用shared_preferences子库的示例,该示例演示如何在Flutter应用程序中存储和检索简单的键值对数据:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Shared Preferences Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
SharedPreferences _prefs;
@override
void initState() {
super.initState();
_loadCounter();
}
// 从SharedPreferences中加载_counter值
_loadCounter() async {
_prefs = await SharedPreferences.getInstance();
setState(() {
_counter = (_prefs.getInt('counter') ?? 0);
});
}
// 将_counter值存储到SharedPreferences中
_incrementCounter() async {
setState(() {
_counter++;
});
await _prefs.setInt('counter', _counter);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Shared Preferences Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
在上面的示例中,我们使用了SharedPreferences类来存储和检索一个名为“counter”的整数值。_loadCounter()方法从SharedPreferences中加载_counter值,而_incrementCounter()方法将_counter值加1并将其存储回SharedPreferences中。在build()方法中,我们使用Text小部件来显示_counter值,而FloatingActionButton小部件则用于增加_counter值。运行该示例后,每次单击“增加”按钮时,都会将_counter值增加1,并在应用程序中显示该值。如果您关闭并重新打开应用程序,您将发现_counter值仍然保持不变,这是因为它已经被保存到SharedPreferences中。