Flutter本地存储插件jt_preferences的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter本地存储插件jt_preferences的使用

1. 整理后的内容中尽量提供关于“Flutter本地存储插件jt_preferences的使用”的完整示例demo

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

void main() async {
  // 初始化JtPreferences,指定加密密钥
  await JtPreferences.initialize(Directory.current.path, encryptionKey: "1X11111111111111");

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final String title;

  const MyHomePage({required this.title});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  String? _keyValue;

  void _incrementCounter() async {
    setState(() {
      _counter++;
      _keyValue = await JtPreferences.getInstance().getString("key");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'You have pushed the button this many times: $_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
            Text(
              'Current key value: $_keyValue',
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

2. 参考我提供的内容和示例代码回答“Flutter本地存储插件jt_preferences的使用”对应的内容

示例代码如下:
import 'package:flutter/material.dart';
import 'package:jt_preferences/jt_preferences.dart';

void main() async {
  // 初始化JtPreferences,指定加密密钥
  await JtPreferences.initialize(Directory.current.path, encryptionKey: "1x11111111111111");

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final String title;

  const MyHomePage({required this.title});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  String? _keyValue;

  void _incrementCounter() async {
    setState(() {
      _counter++;
      _keyValue = await JtPreferences.getInstance().getString("key");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'You have pushed the button this many times: $_counter',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
            Text(
              'Current key value: $_keyValue',
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

3. 内容中的图片显示

  • 初始化插件:

  • 支持的数据类型:

    • int
    • double
    • bool
    • String
    • Writable object
  • 使用说明:

    • pubspec.yaml 文件中添加 jt_preferences 作为依赖项。
  • 示例代码:

    import 'package:flutter/material.dart';
    import 'package:jt_preferences/jt_preferences.dart';
    
    void main() async {
      // 初始化JtPreferences,指定加密密钥
      await JtPreferences.initialize(Directory.current.path, encryptionKey: "1111111111111111");
    
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
            useMaterial3: true,
          ),
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      final String title;
    
      const MyHomePage({required this.title});
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
      String? _keyValue;
    
      void _incrementCounter() async {
        setState(() {
          _counter++;
          _keyValue = await JtPreferences.getInstance().getString("key");
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            backgroundColor: Theme.of(context).colorScheme.inversePrimary,
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                Text(
                  'You have pushed the button this many times: $_counter',
                  style: Theme.of(context).textTheme.headlineMedium,
                ),
                Text(
                  'Current key value: $_keyValue',
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        );
      }
    }
    

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

1 回复

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


当然,以下是如何在Flutter项目中使用jt_preferences插件进行本地存储的示例代码。jt_preferences是一个轻量级的本地存储插件,类似于SharedPreferences,但提供了更简洁的API。

首先,确保你已经在pubspec.yaml文件中添加了jt_preferences依赖:

dependencies:
  flutter:
    sdk: flutter
  jt_preferences: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter项目中使用jt_preferences进行本地存储和读取。下面是一个完整的示例,展示了如何使用jt_preferences来存储和读取键值对。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _savedValue = '';

  @override
  void initState() {
    super.initState();
    // 在初始化时读取存储的值
    _readValueFromPreferences();
  }

  Future<void> _readValueFromPreferences() async {
    String? value = await JtPreferences.getString('my_key');
    setState(() {
      _savedValue = value ?? '';
    });
  }

  Future<void> _saveValueToPreferences(String value) async {
    await JtPreferences.setString('my_key', value);
    setState(() {
      _savedValue = value;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('jt_preferences Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Text(
              'Saved Value:',
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 8),
            TextField(
              decoration: InputDecoration(labelText: 'Enter a value'),
              onChanged: (value) {
                // 可以在用户输入时立即保存,也可以添加一个按钮来保存
                _saveValueToPreferences(value);
              },
            ),
            SizedBox(height: 24),
            Text(
              _savedValue,
              style: TextStyle(fontSize: 16, color: Colors.grey),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. 我们首先导入了jt_preferences包。
  2. _MyHomePageState类中,我们在initState方法中读取存储的值。
  3. _readValueFromPreferences方法异步读取存储的值,并更新状态。
  4. _saveValueToPreferences方法异步存储值。
  5. TextFieldonChanged回调中,我们调用_saveValueToPreferences方法来实时保存用户输入的值(你也可以添加一个保存按钮来控制存储时机)。

注意:为了简化示例,我们在用户输入时立即保存值。在实际应用中,你可能希望在用户点击保存按钮或满足其他条件时才保存值。

回到顶部