Flutter安全存储令牌插件token_store的使用

Flutter安全存储令牌插件token_store的使用

token_store 是一个用于读取和写入 Dart Pub 令牌存储的 API。

此代码是从 Dart Pub 命令中提取出来的独立库。

安装

首先,你需要在 pubspec.yaml 文件中添加 token_store 依赖:

dependencies:
  token_store: ^0.1.0

然后运行 flutter pub get 来获取该依赖。

使用示例

以下是一个完整的示例,展示了如何使用 token_store 插件来安全地存储和读取令牌。

import 'package:flutter/material.dart';
import 'package:token_store/token_store.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Token Store Example'),
        ),
        body: Center(
          child: TokenStoreDemo(),
        ),
      ),
    );
  }
}

class TokenStoreDemo extends StatefulWidget {
  @override
  _TokenStoreDemoState createState() => _TokenStoreDemoState();
}

class _TokenStoreDemoState extends State<TokenStoreDemo> {
  final _tokenKey = 'my_token';
  String _tokenValue = '';

  Future<void> _saveToken(String token) async {
    try {
      await TokenStore().write(_tokenKey, token);
      print('Token saved successfully.');
    } catch (e) {
      print('Failed to save token: $e');
    }
  }

  Future<void> _loadToken() async {
    try {
      final token = await TokenStore().read(_tokenKey);
      setState(() {
        _tokenValue = token ?? '';
      });
    } catch (e) {
      print('Failed to load token: $e');
    }
  }

  @override
  void initState() {
    super.initState();
    _loadToken();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        TextField(
          onChanged: (value) {
            _saveToken(value);
          },
          decoration: InputDecoration(hintText: 'Enter your token here'),
        ),
        SizedBox(height: 20),
        Text('Stored Token: $_tokenValue'),
      ],
    );
  }
}

说明

  1. 导入包

    import 'package:flutter/material.dart';
    import 'package:token_store/token_store.dart';
    
  2. 保存令牌

    Future<void> _saveToken(String token) async {
      try {
        await TokenStore().write(_tokenKey, token);
        print('Token saved successfully.');
      } catch (e) {
        print('Failed to save token: $e');
      }
    }
    
  3. 加载令牌

    Future<void> _loadToken() async {
      try {
        final token = await TokenStore().read(_tokenKey);
        setState(() {
          _tokenValue = token ?? '';
        });
      } catch (e) {
        print('Failed to load token: $e');
      }
    }
    
  4. 界面布局

    Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        TextField(
          onChanged: (value) {
            _saveToken(value);
          },
          decoration: InputDecoration(hintText: 'Enter your token here'),
        ),
        SizedBox(height: 20),
        Text('Stored Token: $_tokenValue'),
      ],
    )
    

更多关于Flutter安全存储令牌插件token_store的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter安全存储令牌插件token_store的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中,安全地存储敏感信息(如用户令牌、API密钥等)是非常重要的。token_store 是一个专门用于安全存储令牌的Flutter插件,它使用平台提供的安全存储机制来保护数据。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 token_store 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  token_store: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 token_store 插件:

import 'package:token_store/token_store.dart';

3. 初始化 TokenStore

在使用之前,你需要初始化 TokenStore

final tokenStore = TokenStore();

4. 存储令牌

你可以使用 storeToken 方法来存储令牌:

await tokenStore.storeToken('my_token_key', 'my_token_value');
  • 'my_token_key' 是用于标识令牌的键。
  • 'my_token_value' 是你想要存储的令牌值。

5. 获取令牌

你可以使用 getToken 方法来获取之前存储的令牌:

String? token = await tokenStore.getToken('my_token_key');

如果令牌存在,token 将包含令牌值;如果不存在,token 将为 null

6. 删除令牌

你可以使用 deleteToken 方法来删除存储的令牌:

await tokenStore.deleteToken('my_token_key');

7. 检查令牌是否存在

你可以使用 hasToken 方法来检查某个令牌是否存在:

bool hasToken = await tokenStore.hasToken('my_token_key');

8. 清除所有令牌

你可以使用 clearAllTokens 方法来清除所有存储的令牌:

await tokenStore.clearAllTokens();

9. 示例代码

以下是一个完整的示例代码,展示了如何使用 token_store 插件来存储、获取和删除令牌:

import 'package:flutter/material.dart';
import 'package:token_store/token_store.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final tokenStore = TokenStore();

  // 存储令牌
  await tokenStore.storeToken('access_token', 'your_access_token_here');

  // 获取令牌
  String? token = await tokenStore.getToken('access_token');
  print('Token: $token');

  // 删除令牌
  await tokenStore.deleteToken('access_token');

  // 检查令牌是否存在
  bool hasToken = await tokenStore.hasToken('access_token');
  print('Has Token: $hasToken');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Token Store Example'),
        ),
        body: Center(
          child: Text('Check the console for token operations.'),
        ),
      ),
    );
  }
}
回到顶部