Size: a a a

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

2020 December 19

AD

Alexandr Drobyshev in Dart & Flutter по-русски
если челу надо в сервисе там пара сток кода нативного, очевидно у него что то еще в сервисе будет
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
а я видел вроде про бекграунд писали) не знал что не для бекграунда надо
источник

A

Anton in Dart & Flutter по-русски
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
ну так получит этот сервис что то и что дальше? как мне его в моем фореграунд сервисе юзать?
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
я не понял если чесно
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
и решил что проще сови 5 строк кода напсиать)
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
ну я хз о чем речь так что может я и не прав)
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
не вижу чтоб предпосылок что он из бекграунда может дернуть драт код если прила выключена
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
или я чего то не понимаю
источник

AD

Alexandr Drobyshev in Dart & Flutter по-русски
или этот плагин работает ток для активной запущенной прилы 🙂
источник

I

Ivan in Dart & Flutter по-русски
источник

EK

Evgeny Kot in Dart & Flutter по-русски
Спасибо
источник

AK

Anton Kowalski in Dart & Flutter по-русски
class TreeView extends StatefulWidget {
 @override
 _TreeView createState() => _TreeView();
}

class _TreeView extends State<TreeView> {
 @override
 Widget build(BuildContext context) {
   List<TreeItem> Items =
       List<TreeItem>(); // ignore: non_constant_identifier_names
   TreeItem item = TreeItem("Item1");
   item.AddChildren(TreeItem("Item1.1"));
   Items.add(item);
   Items.add(TreeItem("Item2"));
   Items.add(TreeItem("Item3"));
   return ListView.builder(
     padding: EdgeInsets.zero,
     itemBuilder: (context, index) {
       TreeItem item = Items[index];
       return Padding(
         padding: EdgeInsets.only(left: item.level * 17.0),
         child: Visibility(
           child: ListTile(
             title: Text(item.Header),
             onTap: () {
               setState(() {
                 item.children.forEach((element) {
                   element.IsVisible = true;
                 });
               });
             },
           ),
           visible: item.IsVisible,
         ),
       );
     },
     itemCount: Items.length,
   );
 }
}

class TreeItem {
 final String Header; // ignore: non_constant_identifier_names
 int level = 0;
 bool IsVisible = true; // ignore: non_constant_identifier_names
 List<TreeItem> children = List<TreeItem>();

 TreeItem(this.Header);

 // ignore: non_constant_identifier_names
 void AddChildren(TreeItem item) {
   item.level = level + 1;
   item.IsVisible = false;
   children.add(item);
 }
}
источник

AK

Anton Kowalski in Dart & Flutter по-русски
Anton Kowalski
class TreeView extends StatefulWidget {
 @override
 _TreeView createState() => _TreeView();
}

class _TreeView extends State<TreeView> {
 @override
 Widget build(BuildContext context) {
   List<TreeItem> Items =
       List<TreeItem>(); // ignore: non_constant_identifier_names
   TreeItem item = TreeItem("Item1");
   item.AddChildren(TreeItem("Item1.1"));
   Items.add(item);
   Items.add(TreeItem("Item2"));
   Items.add(TreeItem("Item3"));
   return ListView.builder(
     padding: EdgeInsets.zero,
     itemBuilder: (context, index) {
       TreeItem item = Items[index];
       return Padding(
         padding: EdgeInsets.only(left: item.level * 17.0),
         child: Visibility(
           child: ListTile(
             title: Text(item.Header),
             onTap: () {
               setState(() {
                 item.children.forEach((element) {
                   element.IsVisible = true;
                 });
               });
             },
           ),
           visible: item.IsVisible,
         ),
       );
     },
     itemCount: Items.length,
   );
 }
}

class TreeItem {
 final String Header; // ignore: non_constant_identifier_names
 int level = 0;
 bool IsVisible = true; // ignore: non_constant_identifier_names
 List<TreeItem> children = List<TreeItem>();

 TreeItem(this.Header);

 // ignore: non_constant_identifier_names
 void AddChildren(TreeItem item) {
   item.level = level + 1;
   item.IsVisible = false;
   children.add(item);
 }
}
Написал свой TreeView, но раскрытие неработает, почему? Помогите, IsVisible меняеться.
источник

AK

Anton Kowalski in Dart & Flutter по-русски
Anton Kowalski
class TreeView extends StatefulWidget {
 @override
 _TreeView createState() => _TreeView();
}

class _TreeView extends State<TreeView> {
 @override
 Widget build(BuildContext context) {
   List<TreeItem> Items =
       List<TreeItem>(); // ignore: non_constant_identifier_names
   TreeItem item = TreeItem("Item1");
   item.AddChildren(TreeItem("Item1.1"));
   Items.add(item);
   Items.add(TreeItem("Item2"));
   Items.add(TreeItem("Item3"));
   return ListView.builder(
     padding: EdgeInsets.zero,
     itemBuilder: (context, index) {
       TreeItem item = Items[index];
       return Padding(
         padding: EdgeInsets.only(left: item.level * 17.0),
         child: Visibility(
           child: ListTile(
             title: Text(item.Header),
             onTap: () {
               setState(() {
                 item.children.forEach((element) {
                   element.IsVisible = true;
                 });
               });
             },
           ),
           visible: item.IsVisible,
         ),
       );
     },
     itemCount: Items.length,
   );
 }
}

class TreeItem {
 final String Header; // ignore: non_constant_identifier_names
 int level = 0;
 bool IsVisible = true; // ignore: non_constant_identifier_names
 List<TreeItem> children = List<TreeItem>();

 TreeItem(this.Header);

 // ignore: non_constant_identifier_names
 void AddChildren(TreeItem item) {
   item.level = level + 1;
   item.IsVisible = false;
   children.add(item);
 }
}
Я так понял свойство Visible не меняется.
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
Lapis Cursed
Или build вызывается каждый раз, когда провайдер меняет значение, просто не перерисовывает неизменные элементы?
build может вызываться сколько угодно раз, не советую привязываться к этому, даже если есть уверенность что подписки на данные в нем нет
источник

RV

Roman Vasiliev in Dart & Flutter по-русски
build должен использоваться только для построения дерева виджетов, никакой логики сторонней вне коллбэков
источник

AA

Anton Anokhin in Dart & Flutter по-русски
источник

AA

Anton Anokhin in Dart & Flutter по-русски
источник