import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'base_view_model.dart'; import 'locater.dart'; class BaseView extends StatefulWidget { final Widget Function(BuildContext context, T model, Widget child) builder; final Function(T) onModelReady; BaseView({ this.builder, this.onModelReady, }); @override _BaseViewState createState() => _BaseViewState(); } class _BaseViewState extends State> { T model = locator(); bool isLogin = false; @override void initState() { if (widget.onModelReady != null) { widget.onModelReady(model); } super.initState(); } @override Widget build(BuildContext context) { return ChangeNotifierProvider.value( value: model, child: Consumer(builder: widget.builder), ); } @override void dispose() { if (model != null) { model = null; } super.dispose(); } }