Coder Social home page Coder Social logo

alibaba / fish-redux Goto Github PK

View Code? Open in Web Editor NEW
7.3K 178.0 846.0 833 KB

An assembled flutter application framework.

Home Page: https://github.com/alibaba/fish-redux

License: Apache License 2.0

Dart 99.61% HTML 0.39%
flutter redux component functional-programming adapter framework reactive aop

fish-redux's People

Contributors

achernoprudov avatar aqiu-alibaba avatar boyan01 avatar christyuj avatar coldfox avatar danieldai avatar festelo avatar fzyzcjy avatar gitnagar avatar han-xiaowei avatar hizzd avatar htynkn avatar huanglizhuo avatar hyjfine avatar hzgotb avatar imkcat avatar lijy91 avatar loverain1997 avatar mazihao66 avatar rahgurung avatar runut avatar seanfreiburg-grab avatar shaomaicheng avatar songyanghe666 avatar systemtce avatar talisk avatar vintlin avatar vyawave avatar wanchen7 avatar zjuwjf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fish-redux's Issues

能详细讲一下Adapter的用法么

比如pool代表什么意思?

ToDoListAdapter是怎么把_ToDoListConnector的数据传递到pool里面的?

adapter关联的是一个list类型的connector不应该builder出一个ListView么?为什么通过adapter.itemBuilder出了一个item?

还有那三个Aapter分别用在什么场合?

关于Page类的疑问

Component的设计很棒,但是Page类是Component的继承,最终是基于一个StatefulWidget,不太适合作为根布局,不知道有什么更好的设计方式?

OOP闭包问题

使用OOP方式编写view的时候,发现有闭包的问题,请问怎么处理?
下面这段代码来自官方sample例子的简单修改:

class TodoView extends ViewPart<ToDoState>{
  @override
  Widget build() {
    return _build();
  }
 Widget _build() {
  return Container(
    padding: const EdgeInsets.all(8.0),
    child: GestureDetector(
      child: Column(
        children: <Widget>[
          GestureDetector(
            child: Container(
              height: 36.0,
              color: state.isDone ? Colors.green : Colors.red,
              child: Row(
                children: <Widget>[
                  Container(
                    child: const Icon(Icons.label_outline),
                    margin: const EdgeInsets.all(8.0),
                  ),
                  Expanded(
                      child: Text(
                    state.title ?? '',
                    maxLines: 1,
                    style: const TextStyle(color: Colors.white, fontSize: 18.0),
                  )),
                  GestureDetector(
                    child: Container(
                      margin: const EdgeInsets.only(right: 16.0),
                      child: (() => state.isDone
                          ? const Icon(Icons.check_box)
                          : const Icon(Icons.check_box_outline_blank))(),
                    ),
                    onTap: () {
                      print(state.uniqueId);
                      /////////这里存在闭包的问题
                      dispatch(ToDoActionCreator.doneAction(state.uniqueId));
                    },
                  )
                ],
              ),
              alignment: AlignmentDirectional.centerStart,
             //省略下面代码........

doc/concept/evolution-of-fish-redux.md 文档错误

  1. 将"留言"这个"Big-Cell"
    - 4.2 解决逻辑的独立性
    > 以闲鱼的详情业务场景为例,其中有两个"Big-Cell":留言和推荐。如果我们将留言和推荐以 Component 形态来组装,就会使得留言和推荐成为两个非常巨大的 Widget,极大的影响了页面的 FPS。
    - 4.3
    > 以闲鱼的详情业务场景为例,其中有两个"Big-Cell":留言和推荐。如果我们将留言和推荐以 Component 形态来组装,就会使得留言和推荐成为两个非常巨大的 Widget,极大的影响了页面的 FPS。

4.2 和 4.3 重复了.
4.1.2 内容缺失

关于Effect广播的用法和说明

关于Effect 广播的一些问题,因为实例代码中没有关于Effect 广播的用法。我只知道如果让方法返回非空,就可以广播进行,但是并不知道具体如何广播。或者是如何执行的。
我看了其他的issue 作出以下做了以下尝试:
1、加入pop事件;
2、print 一下;
发现, 我的APP直接就返回至 黑屏(返回空的时候是返回上一页的);
image
我想了解以下内容:
1、有没有更加详细的关于Effect 说明机制;
2、返回的类型有什么用;
3、这个effect 广播是如何影响其他页面的;
谢谢~

文档过于分散

实际阅读文档感觉太分散了,每个.md 文件的内容也没有多少,放在一个文件里可能阅读体验更好,在涉及到其他概念时就不用再去目录找了直接点击就可以跳转到对应的地方

tabcontroller

如何在 fish redux 中使用 tabcontroller? with 放到哪里呢?

关于Effect的疑惑

假设组件A dispatch一个action时,会调用自己的effect,如果自己没有消耗掉的话,会进行广播,这时其他组件也会调用自己的effect。
这里我有两个问题:

  1. 由于组件A也注册了广播,自己的effect会再次被调用,这里是否要避免一下?
  2. 请问这个广播触发其他组件一起调用effect具体能用在什么情境下?
  static Middleware<T> _applyOnAction<T>(OnAction onAction, Context<T> ctx) {
    return ({Dispatch dispatch, Get<T> getState}) {
      return (Dispatch next) {
        return (Action action) {
          final Object result = onAction?.call(action);
          if (result != null && result != false) {
            return;
          }

          //skip-lifecycle-actions
          if (action.type is Lifecycle) {
            return;
          }

          if (!shouldBeInterrupttedBeforeReducer(action)) {
            ctx.pageBroadcast(action);
          }

          next(action);
        };
      };
    };
  }
}

penta kill

什么开源一个类似闲鱼的app就好了

晚上我回去试试

Can you elaborate the design of "Adapter"?

As far as I learn from the sample, the adapter is an abstract that provides a subtree of the full state for a specific item (which is controlled by a so-called "Component") in list views. Is my understanding correct?

Why can't we just extract the data of one item and pass it to the view, since we can put the logic (reducers & effects) into the containing component? Is that kind of consideration for Divide and Conquer?

通过路由传递的参数,怎么接收

fish-redux中 通过路由传递的参数,怎么在页面中接受使用呢?

Navigator.pushNamed(ctx.context, '/orderDetials',
arguments: {'orderId': action.payload});

可以运行,点击就报错。

可以运行,点击就报错。

error: The named parameter 'backgroundCursorColor' isn't defined. (undefined_named_parameter at [sample] lib/todo_edit_page/view.dart:37)
error: The named parameter 'backgroundCursorColor' isn't defined. (undefined_named_parameter at [sample] lib/todo_edit_page/view.dart:63)

Sample EditableText 报错

运行sample项目的时候会报错

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following assertion was thrown building _ComponentWidget<TodoEditState>(dirty, state:
flutter: _ComponentState<TodoEditState>#33858):
flutter: 'package:flutter/src/widgets/editable_text.dart': Failed assertion: line 241 pos 15:
flutter: 'backgroundCursorColor != null': is not true.
flutter:
flutter: Either the assertion indicates an error in the framework itself, or we should provide substantially
flutter: more information in this error message to help you determine and fix the underlying cause.
flutter: In either case, please report this assertion by filing a bug on GitHub:
flutter:   https://github.com/flutter/flutter/issues/new?template=BUG.md
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #2      new EditableText (package:flutter/src/widgets/editable_text.dart:241:15)
flutter: #3      buildView (package:sample/todo_edit_page/view.dart:31:26)
flutter: #4      _ViewUpdater.buildView (package:fish_redux/src/redux_component/component.dart:143:22)
flutter: #5      _ComponentState.build (package:fish_redux/src/redux_component/component.dart:197:20)
flutter: #6      StatefulElement.build (package:flutter/src/widgets/framework.dart:3825:27)
flutter: #7      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3736:15)

flutter --version

~ flutter --version
Flutter 1.2.1 • channel dev • https://github.com/flutter/flutter.git
Framework • revision 8661d8aecd (3 weeks ago) • 2019-02-14 19:19:53 -0800
Engine • revision 3757390fa4
Tools • Dart 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

EditableText 中的backgroundCursorColor是必填项

关于监听器(listener)摆放位置的请教

来自flutter小白的请教:
如果需要添加类似下面这种监听器
focusNode.addListener((){
if(focusNode.hasFocus){
// do something or dispatch some action
} else {
// other things or dispatch other action
}
})

那么应该在什么哪个位置添加?如果在State中声明focusNode 并初始化, 那么addListener也应该在这个时候就添加了么?但是如果在这个时候添加的话,那么监听器处理函数里面又怎么去dispatch相关的action来另外处理呢?

8杀

哈哈哈!等了你一个星期

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.