8000 GitHub - forJrking/flutter_mvvm: provide 轻量级Mvvm框架
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

forJrking/flutter_mvvm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

flutter_mvvm

flutter_mvvm:
    git:
      url: https://github.com/forJrking/flutter_mvvm.git

Mvvm Flutter 模板

import 'package:flutter/material.dart';
import 'package:flutter_mvvm/mvvm.dart';

class $NAME$Route extends StatelessWidget {
  var _viewModel = $NAME$ViewModel(service: $NAME$Service());
  @override
  Widget build(BuildContext context) {
    return BaseWidget<$NAME$ViewModel>(
      model: _viewModel,
      builder: (context, model, child) => Scaffold(
        appBar: AppBar(
          title: Text($END$),
        ),
        body: Container(
          child: _buildBody(model),
        ),
      ),
      onModelReady: (model) {
        //发起网络请求
        model.demo();
      },
    );
  }

  Widget _buildBody($NAME$ViewModel model) {
    switch (model.state) {
      case ViewState.Success:
        return  Text(model.info);
        break;
      case ViewState.Failure:
      case ViewState.None:
        return Text('Empty');
        break;
      case ViewState.Loading:
      default:
        return Center(child: CircularProgressIndicator());
        break;
    }
  }
}

/// viewModel
class $NAME$ViewModel extends BaseModel {
  $NAME$Service _service;

  $NAME$ViewModel({@required $NAME$Service service}) : _service = service;

  //region ========== 示例 ==========
  String info = '请登录';

  demo() async {
    setState(ViewState.Loading);
    info = await _service.doNet();
    setState(ViewState.Success);
  }
//endregion

}

/// api
class $NAME$Service {
  //接口
  Future<String> doNet() async {
    return new Future.delayed(const Duration(seconds: 2), () => "成功");
  }
}

About

provide 轻量级Mvvm框架

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0