首页 文章

在不使用Firebase的情况下构建一个颤动的实时列表视图

提问于
浏览
0

我一直在玩一个扑动和飞镖的圆形,而你可能会在你可能会感到困惑的一点上有所作为 . 我的目标是从api构建一个列表视图,一旦api改变一个,如果它的字段说 . url字段,它会自动更新列表视图 .

这个alll可以通过使用firebase插件完成,但如果不使用fire base但是自托管的json api'couchdb / loopback.io' . 我在期货,流和redux之间迷失了 . 所以请给我一个例子并保持简单 .

edite:01;提供代码和用例;

下面是我的应用程序 . 它可以从自托管的api中获取图像,如上所述'couchdb / loopback.io',每次点击按钮,点击部分都可以忽略,我的目标是让列表自动更新,如果新的'post'被解雇了他api由邮递员说 . 现在;我一直在阅读溪流redux我只是无法包围我的脑袋,可能是读者应该具备的假定知识的文档的语言,这就是为什么我要求一个例子,所以我可以很好地理解它 .

import 'package:flutter/material.dart';
import 'src/app.dart';
    void main(){
      runApp(App());
    }


    class ImageModel {

      int id;
      String name;
      String url;


      ImageModel.fromJson(parsedJson){
        id = parsedJson['id'];
        name = parsedJson['name'];
        url = parsedJson['url'];

      }


    }



    //import
    import 'package:flutter/material.dart';
    import 'package:http/http.dart' show get; //import for making http requests
    import 'models/image_model.dart'; //import model
    import 'dart:convert'; //convert json
    import 'widgets/image_list.dart'; //import image widget



    class App extends StatefulWidget{

      createState() {
        return AppState();
      }

    }


    // create class
    class AppState extends State<App> {

      int counter = 0;
      List<ImageModel> images = [];


      void fetchImage() async{

        counter++;
       var response = await get('http://192.168.1.66:3000/api/images/$counter');
       var imageModel = ImageModel.fromJson(json.decode(response.body));

       setState(() {
         images.add(imageModel);
       });


      }


      Widget build(context) {
        return MaterialApp(
          home: Scaffold(
            body: ImageList(images),
            floatingActionButton: FloatingActionButton(
              onPressed: fetchImage,


              child: Icon(Icons.add),

            ),
            appBar: AppBar(
              title: Text('Title'),

            ),

          ),
        );
      }


    }

    import 'package:flutter/material.dart';
    import '../models/image_model.dart';


    class ImageList extends StatelessWidget {

      final List<ImageModel> images;

      ImageList(this.images);


      Widget build(context) {
        return ListView.builder(
          itemCount: images.length,
          itemBuilder: (context,int index){

            return Container(
              margin: EdgeInsets.all(20.0),
              child: Image.network(images[index].url),

            );

          },
        );
      }

    }

2 回答

  • 0

    你可以使用Dart WebSockets完成任务; Firebase原则上没有别的 - 自定义WSS-API甚至可以由实际的SQL服务器支持 . 一个广泛的问题总会得到广泛的答案 .

  • 0

    您可以使用firestore并使用StreamBuilder小部件引用数据 . 每当firestore集合中发生更改时,流都会监听更改并重建ui

    You can watch it in action in this talk

相关问题