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中。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""