Использование улья с флаттером для хранения списка делAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Использование улья с флаттером для хранения списка дел

Сообщение Anonymous »


Я полный новичок во флаттинге, так что это может быть для вас легко. Я пытаюсь интегрировать Hive в свое приложение, чтобы хранить информацию локально. Однако я не уверен, как бы я это сделал. Это то, что у меня есть до сих пор, и я так застрял. Если бы вы показали мне, где в коде можно что-то добавить/удалить/изменить, было бы здорово.

ОСНОВНАЯ ФУНКЦИЯ

import 'package:flutter/material.dart'; импортировать «пакет: flutter_slidable/flutter_slidable.dart»; импортировать «пакет: hive/hive.dart»; импортировать «пакет: hive_flutter/hive_flutter.dart»; void main() асинхронный { ожидайте Hive.initFlutter(); Hive.registerAdapter(TodoAdapter()); запустить приложение( МатериалПриложение( debugShowCheckedModeBanner: ложь, дом: Строитель( строитель: (контекст) { вернуть GestureDetector( onTap: () { FocusScope.of(context).unfocus(); }, дочерний элемент: const TodoApp(), КЛАСС ЗАДАЧ И Т.Д.

класс Todo { окончательный текст строки; окончательный bool проверен; внутренний приоритет; статический int _tasknumber = 0; последний ключ int; //ЗАДАЧА: ПОНЯТЬ ЭТО Делать({ требуется this.text, требуется это.проверено, требуется этот.приоритет, }) : ключ = _tasknumber++; } класс TodoAdapter расширяет TypeAdapter { @переопределить окончательный int typeId = 0; @переопределить Todo read (читатель BinaryReader) {} @переопределить void write (писатель BinaryWriter, Todo obj) {} } класс TodoApp расширяет StatefulWidget { const TodoApp({super.key}); @переопределить State createState() => _TodoAppState(); } класс _TodoAppState расширяет State { окончательный _textyController = TextEditingController(); Данные List = []; инт? _radioValue = 1; Боул isEditing = ложь; int editIndex = -1; // Инициализируем как -1, чтобы указать отсутствие активного редактирования изначально. Bool isContainerVisible = ложь; bool settingsVisibility = false; var box = await Hive.openBox('todoBox'); box.add(вашеTodo); вар todos = box.values.toList; box.putAt(индекс, обновленноеTodo); box.deleteAt(индекс); ожидайте окно.закрыть; окончательный FocusNode _textFocus = FocusNode(); недействительный располагать () { _textFocus.dispose(); супер.dispose(); } @переопределить недействительный initState() { _textFocus.addListener(() { setState(() { isContainerVisible = _textFocus.hasFocus; }); }); } РЕДАКТИРОВАНИЕ/УДАЛЕНИЕ ФУНКЦИЙ

SlidableAction( Цвет фона: Colors.green, значок: Icons.edit, //метка: 'Редактировать', onPressed: (контекст) => { setState(() { isEditing = Истина; EditIndex = индекс; _textyController.text = данные[индекс].текст; _radioValue = данные[индекс].priority; _textFocus.requestFocus(); }), }, ), СлайдаблеДействие( фоновый цвет: Цвета.красный[400] ?? Цвета.красный, значок: Icons.delete_forever, //метка: «Удалить», onPressed: (контекст) => { setState(() { если (isРедактирование && индекс редактирования >= 0 && индекс редактирования < данные.длина) { isEditing = ложь; _textyController.text = ''; _radioValue = 1; Slidable.of(контекст)?.close(); } deleteTasks (индекс, данные [индекс]); }), }, ), ДОБАВЛЕНИЕ НОВЫХ ДАННЫХ В СПИСОК
Строка( mainAxisAlignment: MainAxisAlignment.spaceEvenly, дети: [ Радио( значение: 1, groupValue: isEditing ? данные[editingIndex].priority : _radioValue, onChanged: (changedRadio) { setState(() { если (isEditing) { данные[editingIndex].priority = поменял радио?? 1; } еще { _radioValue = измененоРадио; } _textFocus.requestFocus(); }); }, Цвет заливки: MaterialStateProperty.all(Colors.red), ), //Текст('Высокий'), ], ), дочерний элемент: TextField( focusNode: _textFocus, контроллер: isEditing ? TextEditingController (текст: данные [editingIndex].text) : _textyController, onSubmited: (значение) { setState(() { если (isEditing) { data[editingIndex] = Все( текст: значение, проверено: данные[editingIndex].checked, приоритет: данные[editingIndex].priority, ); isEditing = ложь; } еще { данные.вставка( 0, Делать( текст: значение, проверено: ложь, приоритет: _radioValue ?? 0, )); } _textyController.clear(); _textFocus.requestFocus(); _textyController.selection = TextSelection.fromPosition( TextPosition(смещение: _textyController.text.length));
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»