diff --git a/database/database.hive b/database/database.hive new file mode 100644 index 0000000..abb2a17 Binary files /dev/null and b/database/database.hive differ diff --git a/database/database.lock b/database/database.lock new file mode 100644 index 0000000..e69de29 diff --git a/database/tesdatabase.hive b/database/tesdatabase.hive new file mode 100644 index 0000000..e69de29 diff --git a/database/tesdatabase.lock b/database/tesdatabase.lock new file mode 100644 index 0000000..e69de29 diff --git a/databaseTest/tesdatabase.hive b/databaseTest/tesdatabase.hive new file mode 100644 index 0000000..e69de29 diff --git a/databaseTest/tesdatabase.lock b/databaseTest/tesdatabase.lock new file mode 100644 index 0000000..e69de29 diff --git a/databaseTest/userscachefinaly4.hive b/databaseTest/userscachefinaly4.hive new file mode 100644 index 0000000..e69de29 diff --git a/databaseTest/userscachefinaly4.lock b/databaseTest/userscachefinaly4.lock new file mode 100644 index 0000000..e69de29 diff --git a/lib/core/manager/cache/user_cache_manager.dart b/lib/core/manager/cache/user_cache_manager.dart index 12f5233..39693e5 100644 --- a/lib/core/manager/cache/user_cache_manager.dart +++ b/lib/core/manager/cache/user_cache_manager.dart @@ -19,7 +19,7 @@ abstract class ICacheManager { await _box?.clear(); } - Future addItems(List items); + Future addItems(List? items); Future putItems(List items); T? getItem(String key); @@ -33,8 +33,8 @@ class UserCacheManager extends ICacheManager { UserCacheManager(String key) : super(key); @override - Future addItems(List items) async { - await _box?.addAll(items); + Future addItems(List? items) async { + await _box?.addAll(items ?? []); } @override diff --git a/lib/feature/search/search_view.dart b/lib/feature/search/search_view.dart index ed67c13..6b303a4 100644 --- a/lib/feature/search/search_view.dart +++ b/lib/feature/search/search_view.dart @@ -25,23 +25,28 @@ setState(() { return Scaffold( appBar: AppBar( title: TextField( + autofocus: true, + style: const TextStyle( + color: Colors.white + ), + cursorColor: Colors.white, onChanged: (value){ findAndSet(value); }, ), leading: InkWell( - child: Icon(CupertinoIcons.back), + child: const Icon(CupertinoIcons.back), onTap: (){ Navigator.pop(context); }, ), ), body: ListView.builder( - itemCount:_items.length , + itemCount:1, itemBuilder: (((context, index) { return Card( child: ListTile( - title: Text(_items.map((e) => '${e.name}').join('')), + title: Text(_items.map((e) => '${e.name}').join(",")), ), ); }) ) ), diff --git a/lib/feature/user/view/user_view.dart b/lib/feature/user/view/user_view.dart index d6f2585..3aa8ff5 100644 --- a/lib/feature/user/view/user_view.dart +++ b/lib/feature/user/view/user_view.dart @@ -8,14 +8,14 @@ import 'package:provider/provider.dart'; import '../../search/search_view.dart'; import '../model/user_model.dart'; -class UserViewWidget extends StatefulWidget { - const UserViewWidget({Key? key}) : super(key: key); +class UserView extends StatefulWidget { + const UserView({Key? key}) : super(key: key); @override - State createState() => _UserViewWidgetState(); + State createState() => _UserViewState(); } -class _UserViewWidgetState extends State { +class _UserViewState extends State { late UserViewModel userViewModel; late final ICacheManager cacheManager; List? _items; @@ -32,7 +32,7 @@ class _UserViewWidgetState extends State { Future fetchDatasInit() async { await cacheManager.init(); if (cacheManager.getValues()?.isNotEmpty ?? false) { - _items = cacheManager.getValues(); + _items = cacheManager.getValues(); } else { _items = userViewModel.userViewModelList; } @@ -41,8 +41,8 @@ class _UserViewWidgetState extends State { @override Widget build(BuildContext context) { - return cacheManager.getValues()!.isNotEmpty - ? bodyView(context) + return cacheManager.getValues()!.isNotEmpty + ? bodyView(context) : ChangeNotifierProvider.value( value: userViewModel, child: Consumer( @@ -52,6 +52,7 @@ class _UserViewWidgetState extends State { } Scaffold bodyView(BuildContext context) { + return Scaffold( appBar: AppBar( actions: [ @@ -78,8 +79,9 @@ class _UserViewWidgetState extends State { } }), body: ListView.builder( - itemCount: _items!.length, + itemCount: _items?.length, itemBuilder: ((context, index) { + return Card( child: ListTile( leading: const CircleAvatar( diff --git a/lib/main.dart b/lib/main.dart index f7fdffa..3015a5a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,6 +13,7 @@ void main() async { NetworkManager.instance.init('https://jsonplaceholder.typicode.com', {}); WidgetsFlutterBinding.ensureInitialized(); await Hive.initFlutter(); + runApp(MyApp()); } @@ -21,9 +22,10 @@ class MyApp extends StatelessWidget { Widget build(BuildContext context) { return Provider( create:(context) => UserContext(), - child: MaterialApp( + child:const MaterialApp( + debugShowCheckedModeBanner: false, title: 'Material App', - home: UserViewWidget() + home: UserView() ), ); } diff --git a/test/cache/cache_test.dart b/test/cache/cache_test.dart index 464ceee..f9f2c30 100644 --- a/test/cache/cache_test.dart +++ b/test/cache/cache_test.dart @@ -1,12 +1,52 @@ +import 'package:flutter_clean_app_examples/core/manager/cache/user_cache_manager.dart'; +import 'package:flutter_clean_app_examples/feature/user/model/user_model.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:hive_flutter/hive_flutter.dart'; void main() { - setUp(() { - Hive.init("database"); + late UserCacheManager userCacheManager; + List? _items; + List? _itemsAllValues; + + setUp(() async { + Hive.init('database'); + userCacheManager = UserCacheManager("database"); + await userCacheManager.init(); }); + group("UserCacheManager testing", () { + test(("putItem and getItem method "), () async { + await userCacheManager.putItem("name", User(name: "cihangir")); + expect(userCacheManager.getItem("name")?.name.toString(), "cihangir"); + }); + + test("getValues method", () { + _items = userCacheManager.getValues(); + expect(_items?.first.name, "cihangir"); + }); + + test("addItems method", () async { + await userCacheManager.putItem("name2", User(name: "emirhan")); + await userCacheManager.addItems(_items); + _itemsAllValues = userCacheManager.getValues(); + + expect(_itemsAllValues?.last.name, "emirhan"); + }); + test("removeItem method", () async { + await userCacheManager.removeItem("name2"); + _itemsAllValues = userCacheManager.getValues(); + print(_itemsAllValues?.last.name); + expect(_itemsAllValues?.last.name, "cihangir"); + }); + + + }); +} +/* group(("Hive main examples group"), () { + + + test("Add examples", () async { final box = await Hive.openBox('examples'); box.add("cihangir"); @@ -29,4 +69,4 @@ void main() { }); -} +}*/ diff --git a/test/core/user_view_model_test.dart b/test/core/user_view_model_test.dart index 0ec4d97..0098fae 100644 --- a/test/core/user_view_model_test.dart +++ b/test/core/user_view_model_test.dart @@ -16,7 +16,6 @@ void main() { final response = userViewModel.controlResponse(Response( data:userList, requestOptions: RequestOptions(path: "/hello"))); - print(response?[0].name.toString()); expect(response?[0].name, "cihangir"); }); diff --git a/testDatabase/tesdatabase.hive b/testDatabase/tesdatabase.hive new file mode 100644 index 0000000..e69de29 diff --git a/testDatabase/tesdatabase.lock b/testDatabase/tesdatabase.lock new file mode 100644 index 0000000..e69de29