价格行情第二节

170 阅读1分钟

设置一个根据接口值变更颜色的组件流程

设置组件的属性值为一个方法就好。

 Text(_list[index]["list"][indexs]["spread"],
                      textAlign: TextAlign.center,
                      style: TextStyle(
                          color: Colors.white, //- 设置字体颜色,这里设置的是一个具体值
                          backgroundColor: _switchColor(rowModel["spread"]))),//设置背景颜色,方法返回一个Color
_switchColor(value) {
     if(double.parse(value) == 0){
       return Colors.grey;
     }else if(double.parse(value) > 0){
       return Colors.green;
     }else{
       return Colors.red;
     }
  }

很简单,就是基于对dart语法的学习.

listView实现上拉加载.

大概给原有的listview上附加3个部分.

1.声明一个ScrollController,这个controller有滑动的监听,通过这个监听执行刷新的方法。

ScrollController _controller = new ScrollController();
_controller.addListener((){
      //判断是否滑动到了页面的最底部
      if(_controller.position.pixels == _controller.position.maxScrollExtent){
        //如果不是最后一页数据,则生成新的数据添加到list里面
        if(_page < totalPage){
          _onRefresh();
        }
      }
    });
  }

2.把controller绑定到listview上

Expanded(
                  child: ListView.builder(
                     controller: _controller,
                     itemCount: _list == null ? 0 : _list.length,
                     itemBuilder: this._getItems),
                )

3.实现加载方法,注意异步的写法

Future<void> _onRefresh() async {
     _page ++;
     this._getData();
  }

这里是异步future函数的具体教程:www.jianshu.com/p/c0e30769e…

简单的页面跳转

基本写法

Navigator.of(context).push(
                    MaterialPageRoute(builder: (context)=>FirstPage())
                  );

这个FirstPage就是你建的新页面的StatefulWidget


import 'package:flutter/material.dart';

class FirstPage extends StatefulWidget {
  FirstPage({Key key}) : super(key: key);

  @override
  _FirstPageState createState() => _FirstPageState();
}

class _FirstPageState extends State<FirstPage> {
        ....

当然别忘了引入

import '../home/first.dart';