Size: a a a

Dart & Flutter по-русски

2020 December 06

P

Pa_blooo in Dart & Flutter по-русски
разве вы обращаете внимание на гло?
источник

А

Андрей in Dart & Flutter по-русски
конечно
источник

v

vasilich in Dart & Flutter по-русски
Мади
я сделал listview.builder который берет данные из нескольких строковых массивов и отображает в виде одного списка. Чтобы добавить еще один элемент списка я создал новый экран с несколькими TextField, которые добавляют данные в массивы. Вопрос: после добавления данных в массивы сам listView отображает новую строку только после перехода между вкладками. Проблема в том, что после добавления данных в массивы, автоматически не отображается новый элемент списка.
Сет стейт вызови
источник

М

Мади in Dart & Flutter по-русски
vasilich
Сет стейт вызови
не могу, вот код кнопки из другого экрана, который добавляет данные в массивы. У нее нет SetState
FlatButton(
               child: Text('Add'),
               color: Colors.grey,
               onPressed: () {
                 nameOfTaskList.add(newTaskTitle);
                 descriptionOfTaskList.add(newTaskDescription);
                 iconOfTaskList.add(Icons.ac_unit);

                 Navigator.pop(context);
               },
источник

v

vasilich in Dart & Flutter по-русски
Мади
не могу, вот код кнопки из другого экрана, который добавляет данные в массивы. У нее нет SetState
FlatButton(
               child: Text('Add'),
               color: Colors.grey,
               onPressed: () {
                 nameOfTaskList.add(newTaskTitle);
                 descriptionOfTaskList.add(newTaskDescription);
                 iconOfTaskList.add(Icons.ac_unit);

                 Navigator.pop(context);
               },
Вызови там где можешь
источник

V

Vyacheslav in Dart & Flutter по-русски
Ugin
Срабатывает
все-таки пройдись по всем этапам, потому что пермишны обычно выдают исключения (если у тебя дебаг режим и не отжаты галочки)
источник

U

Ugin in Dart & Flutter по-русски
Vyacheslav
все-таки пройдись по всем этапам, потому что пермишны обычно выдают исключения (если у тебя дебаг режим и не отжаты галочки)
Ок спасибо
источник

V

Vyacheslav in Dart & Flutter по-русски
Ugin
Кто подскажет? Не получается записать файл в папку на телефоне, использую такой простой код и ничего:
import 'dart:async';
import 'dart:io';

import 'package:path_provider/path_provider.dart';

class LogStorage {

 Future<String> getFilePath() async {
   final Directory appDocumentsDirectory = await getApplicationDocumentsDirectory();
   final String appDocumentsPath = appDocumentsDirectory.path;

   final String filePath = '$appDocumentsPath/log.txt';

   return filePath;
 }

 Future<void> saveFile() async {
   final File file = File(await getFilePath());
   print(file);
   file.writeAsString("log.txt test contents");
 }

 Future<void> readFile() async {
   final File file = File(await getFilePath());
   final String fileContent = await file.readAsString();
   print('File Content: $fileContent');
 }
}

final LogStorage storage = LogStorage();
пробую инициировать запись в файл в виджете по кнопке:
RaisedButton(
           splashColor: Colors.blue,
           animationDuration: const Duration(seconds: 2),
           padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10),
           child: const Text('Save File', style: textStyleButton),
           color: Colors.blueGrey,
           onPressed: storage.saveFile,
         ),
права на запись в манифесте стоят:
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />

лог: I/flutter (21483): File: '/data/user/0/com.example.maoz/app_flutter/log.txt'
и я не сталкивался с такой конструкцией final File file = File(await getFilePath());
источник

V

Vyacheslav in Dart & Flutter по-русски
Народ, разве можно await писать аргументом объекта
источник

v

vasilich in Dart & Flutter по-русски
Мади
не могу, вот код кнопки из другого экрана, который добавляет данные в массивы. У нее нет SetState
FlatButton(
               child: Text('Add'),
               color: Colors.grey,
               onPressed: () {
                 nameOfTaskList.add(newTaskTitle);
                 descriptionOfTaskList.add(newTaskDescription);
                 iconOfTaskList.add(Icons.ac_unit);

                 Navigator.pop(context);
               },
Проблема в том что после добавления айтема в массив фрейморк никак не уведомляется что стейт поменялся. Соответственно никто и не обновляет экран.
А когда переходишь туды-сюды - оно вынуждено перерисовывается.

Вот и смотри относительно своего случая где тебе лучше вызвать сетСтейт или любое другое дней такие которое заставить переписываться
источник

V

Vyacheslav in Dart & Flutter по-русски
Ugin
Кто подскажет? Не получается записать файл в папку на телефоне, использую такой простой код и ничего:
import 'dart:async';
import 'dart:io';

import 'package:path_provider/path_provider.dart';

class LogStorage {

 Future<String> getFilePath() async {
   final Directory appDocumentsDirectory = await getApplicationDocumentsDirectory();
   final String appDocumentsPath = appDocumentsDirectory.path;

   final String filePath = '$appDocumentsPath/log.txt';

   return filePath;
 }

 Future<void> saveFile() async {
   final File file = File(await getFilePath());
   print(file);
   file.writeAsString("log.txt test contents");
 }

 Future<void> readFile() async {
   final File file = File(await getFilePath());
   final String fileContent = await file.readAsString();
   print('File Content: $fileContent');
 }
}

final LogStorage storage = LogStorage();
пробую инициировать запись в файл в виджете по кнопке:
RaisedButton(
           splashColor: Colors.blue,
           animationDuration: const Duration(seconds: 2),
           padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10),
           child: const Text('Save File', style: textStyleButton),
           color: Colors.blueGrey,
           onPressed: storage.saveFile,
         ),
права на запись в манифесте стоят:
   <uses-permission android:name="android.permission.INTERNET"/>
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
   <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />

лог: I/flutter (21483): File: '/data/user/0/com.example.maoz/app_flutter/log.txt'
ты сначала получи путь к файлу, и потом его укажи аргументом
источник

U

Ugin in Dart & Flutter по-русски
Vyacheslav
ты сначала получи путь к файлу, и потом его укажи аргументом
ок
источник

V

Vyacheslav in Dart & Flutter по-русски
Ugin
ок
final _filePath = await getFilePath();
File file = File(_filePath);
источник

U

Ugin in Dart & Flutter по-русски
Vyacheslav
final _filePath = await getFilePath();
File file = File(_filePath);
👌
источник

М

Мади in Dart & Flutter по-русски
vasilich
Проблема в том что после добавления айтема в массив фрейморк никак не уведомляется что стейт поменялся. Соответственно никто и не обновляет экран.
А когда переходишь туды-сюды - оно вынуждено перерисовывается.

Вот и смотри относительно своего случая где тебе лучше вызвать сетСтейт или любое другое дней такие которое заставить переписываться
это возможно сделать в Navigator, чтобы после нажатия на кнопку возврата, обновлялся state предыдущей страницы?
источник

А

Андрей in Dart & Flutter по-русски
Мади
это возможно сделать в Navigator, чтобы после нажатия на кнопку возврата, обновлялся state предыдущей страницы?
await Navigator.push()
setState()
источник

U

Ugin in Dart & Flutter по-русски
Vyacheslav
final _filePath = await getFilePath();
File file = File(_filePath);
Работает ) оказывается проблема в кривом пути была )) пока проставил руками путь
final String filePath = '/storage/emulated/0/Download/log.txt';
и все отлично записалось![
остается только заюзать плагин который автоматом определяет корректно путь к папке и правильно запросить пермишены!
источник

v

vasilich in Dart & Flutter по-русски
Мади
это возможно сделать в Navigator, чтобы после нажатия на кнопку возврата, обновлялся state предыдущей страницы?
После совета Андрея го читать туториал по навигации

https://flutter.dev/docs/development/ui/navigation
источник

АА

Асылхан Алданазар... in Dart & Flutter по-русски
Добрый день дорогие флаттер разрабы!) кто нибудь сталкивался с тем что в ios push уведомления (fire base), прилетают в бэкграунде но на форграунде ничего не идёт?)
источник

АА

Асылхан Алданазар... in Dart & Flutter по-русски
Именно при залитом приложении в апп стор, а при разработке все работает
источник