【问题标题】:How to save the state of checkbox in flutter. It should remain checked or unchecked even if we navigate to another page or close the app如何在颤动中保存复选框的状态。即使我们导航到另一个页面或关闭应用程序,它也应该保持选中或未选中
【发布时间】:2022-07-19 21:10:09
【问题描述】:

如何保存复选框状态意味着当我们检查它时,即使我们浏览应该或关闭程序,它也应该保持选中状态。 这里我使用提供者来保存状态请指导我们在flutter中选中或取消选中复选框状态后如何保存复选框状态。下面是我的代码:

main.dart 文件-

import 'dart:developer';

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

    import 'package:samplecheckbox/checkprovider.dart';

    import 'package:samplecheckbox/myhomepage.dart';

void main() {
  runApp(MultiProvider(providers: [
    ChangeNotifierProvider(create: (_) => CheckProvider()),
  ], child: MyApp()));
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Create a Checkbox',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

provider.dart 文件-

import 'package:flutter/material.dart';

class CheckProvider extends ChangeNotifier {
  bool _checkbox = false;
  void checkValue() {
    _checkbox = !_checkbox;
  }
}

myhomepage.dart 文件-

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:samplecheckbox/checkprovider.dart';

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

class _MyHomePageState extends State<MyHomePage> {
  bool _checkbox = false;
  bool _checkboxListTile = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Create a Checkbox'),
      ),
      body: Center(
        child: Column(
          children: [
            Row(
              children: [
                Checkbox(
                  value: _checkbox,
                  onChanged: (value) =>
                      context.read<CheckProvider>().checkValue(),
                )
              ],
            ),
            
          ],
        ),
      ),
    );
  }
}

【问题讨论】:

标签: flutter dart checkbox provider state-management


【解决方案1】:

您可以使用shared_preferences 将您的键值对数据存储在颤振中。

存储数据:

// Obtain shared preferences.

final prefs = await SharedPreferences.getInstance();

// Save an boolean value to 'repeat' key.

await prefs.setBool('isCheckboxChecked', true);

获取数据:

final bool? isChecked = prefs.getBool('isCheckboxChecked');

【讨论】:

    【解决方案2】:

    如果您的 chick box 值不关心服务器,则使用 shared_preferences

    如果您的 chick box 值确实关心服务器,那么 shared_preferences 将永远不会有帮助,并且您每次访问该特定页面时都需要从服务器返回 bool 值。

    如果您需要在应用程序使用中保存值,那么您需要使用全局布尔值

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2021-04-24
      相关资源
      最近更新 更多