Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Mvvmlight | 1,683 | 6 years ago | 14 | Java | ||||||
A toolkit help to build Android MVVM Application | ||||||||||
Neutronium | 1,316 | 3 | 8 | 3 months ago | 16 | September 11, 2020 | 92 | mit | C# | |
🚀 Build .NET desktop applications using HTML, CSS and javascript. | ||||||||||
Android Data Binding Recyclerview | 572 | 5 years ago | 10 | apache-2.0 | Java | |||||
Using Recyclerview with the new Android Data Binding framework | ||||||||||
Android Mvvm | 437 | 5 years ago | 16 | apache-2.0 | Java | |||||
MVVM on Android using RxJava and Data Binding | ||||||||||
Rxviewmodel | 370 | 9 | 3 years ago | 24 | October 31, 2017 | 9 | mit | Swift | ||
ReactiveViewModel-esque using RxSwift | ||||||||||
Mvvmcross Samples | 328 | a month ago | 33 | ms-pl | C# | |||||
Tutorials and samples for MvvmCross: The .NET MVVM framework for cross-platform solutions. | ||||||||||
Android Viewmodelbinding | 312 | 5 years ago | 7 | Java | ||||||
A lightweight library aiming to speed up Android app development by leveraging the new Android Data Binding together with the Model-View-ViewModel design pattern. | ||||||||||
Tictactoe Mvvm | 238 | 4 years ago | 1 | Java | ||||||
Sample android application used to learn the Model View View Model pattern and DataBinding in Android | ||||||||||
Todolist Mvvm | 230 | 6 years ago | 3 | mit | Swift | |||||
Sample application using MVVM in Swift | ||||||||||
Mv2m | 186 | 7 years ago | 1 | apache-2.0 | Java | |||||
Android MVVM lightweight library based on Android Data Binding |
A Flutter MVVM (Model-View-ViewModel) implementation. It uses property-based data binding to establish a connection between the ViewModel and the View, and drives the View changes through the ViewModel.
一个 Flutter 的 MVVM(Model-View-ViewModel) 实现。 它使用基于属性 (property) 的数据绑定在视图模型 (ViewModel) 与视图 (View) 之间建立关联,并通过视图模型 (ViewModel) 驱动视图 (View) 变化。
import 'package:flutter/material.dart';
import 'package:mvvm/mvvm.dart';
/// ViewModel
class MyHomePageViewModel extends ViewModel {
final timer$ = BindableProperty.$tick(
duration: const Duration(milliseconds: 10), autostart: true, initial: 0);
@override
init() {
registerProperty(#counter, BindableProperty.$value(initial: 0));
}
void incrementCounter() {
updateValue<int>(#counter, (value) => value + 1);
}
}
/// View
class MyHomePage extends View<MyHomePageViewModel> {
final String title;
const MyHomePage({Key? key, required this.title}) : super(key: key);
@override
MyHomePageViewModel createViewModel() => MyHomePageViewModel();
pad(int value) => '$value'.padLeft(2, '0');
@override
Widget build(BuildContext context, MyHomePageViewModel model) {
return Scaffold(
appBar: AppBar(title: Text(title)),
body: Center(
child:
Column(mainAxisAlignment: MainAxisAlignment.center, children: [
$watch<int>(model.timer$,
builder: (context, value, child) =>
Text('${pad(value ~/ 100)}.${pad(value % 100)}')),
const Text('You have pushed the button this many times:'),
model.$watchFor<int>(#counter,
builder: (context, value, child) =>
Text('$value', style: Theme.of(context).textTheme.headline4))
])),
floatingActionButton: FloatingActionButton(
onPressed: model.incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add)));
}
}
/// run
void main() => runApp(MaterialApp(
title: 'Flutter MVVM Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: const MyHomePage(title: 'Flutter MVVM Demo Home Page'),
));