โจ๏ธ ๋ฌธ์ ์ํฉ
๋ง๋ค๊ณ ์๋ ํ๋ก์ ํธ ํ์ด์ง ์ค์ ๊ธ์ ๊ฒ์ํ๋ ํ์ด์ง๊ฐ ์๋๋ฐ, ์ต๊ทผ ๊ฒ์์ด๋ฅผ ๋ฑ๋ก, ์ญ์ ๊ธฐ๋ฅ์ ์์ ํด์ผ ํ๋ ์ํฉ.
Hive์ ์ ์ฅํด๋๊ณ ํด๋น ์์ดํ ์ ๊บผ๋ด์์ obx๋ก ์ํ๊ด๋ฆฌ๋ฅผ ํ๋ฉด์ ์ญ์ , ๋ฑ๋ก์ ํด์ผ ํ๋๋ฐ, ๋จ์ด๋ฅผ ํ๋์ฉ ์ถ๊ฐํ ๋๋ง๋ค ๋ฐฐ์ด์ ๋ค์ ๋ถ๋ ๊ฒ ์๋๋ผ ์์ ๋ถ๊ฒ ํ๊ฑฐ๋, ๋ค๋ก ๋ถ์ผ ๊ฑฐ๋ฉด reverse๋ฅผ ์์ผ์ ๋ฐฐ์ด์ด ๋๋ฌ๋๊ฒ ํด์ค์ผ ํ๋ ์ํฉ. ์ฌ๊ธฐ๊น์ง๋ ๊ด์ฐฎ์๋ฐ, ๋ฌธ์ ๋ ํด๋น ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ ์ญ์ ๋ฅผ ํด์ผ ํ๋ ์ํฉ์ด๋ค. ๋ฐฐ์ด ์์ชฝ์ผ๋ก ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ํ๋๋ ์ธ๋ฑ์ค๋ ๋ณํ์ง ์๋ ๊ฒ์ธ์ง ํด๋น ๋จ์ด๋ฅผ ๋๋ฅด๋ฉด ๋ค๋ฅธ ๋จ์ด๊ฐ ์ฌ๋ผ์ก๋ค. ๊ฒ๋ค๊ฐ 10๊ฐ ์ด์์ ์ถ๋ ฅ์ํค์ง ๋ง๋ผ๋ ์กฐ๊ฑด๊น์ง ๋ถ์๋ค.
ํด๊ฒฐ ๋ฐฉ์
โ ์ต๊ทผ๊ฒ์์ด ์ ๋ฐ์ดํธ ๋ ๋ ๋ฐฐ์ด ์์ชฝ์ผ๋ก ๋ณด๋ด๊ธฐ โก๏ธ insert() method ์ฌ์ฉํ๊ธฐ
list.insert(0, item);
๋ณดํต list์ ๋ํ ๋ add()๋ฅผ ๋ง์ด ์ฐ๋๋ฐ, ์ต๊ทผ ๊ฒ์์ด๋ ํ๋์ฉ ๋์ด๋ ๋๋ง๋ค ์์ชฝ์ ๋ถ์ด์ผํ๋ค.
๊ทธ๋์ add๋์ ์ insert()๋ผ๋ ๋ฉ์๋๋ฅผ ์ฐ๊ณ , ์ถ๊ฐํ index์ ์ถ๊ฐํ text๋ฅผ ๋ฃ์ด์ค๋ค.
โ RxList ๊ฐฏ์ ์ ํํ๊ธฐ โก๏ธ removeLast() method ์ฌ์ฉํ๊ธฐ
์ด ๋ถ๋ถ์ ๊ตฌํํ๋๋ฐ ์ ์ผ ๋ง์ ์๊ฐ์ด ๋ค์ด๊ฐ์๋ค. Hive.Box์ ๋ด๋ ๊ฑธ ๊ตฌํํ์ง ์์์ ๊ธํ๊ฒ hive์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํด์ผ ํ๋ค. ํ์ ์ด ์ด๋ค์ง, box์ ์ ์ฅ๋๋ listํํ๋ฅผ ๊ธธ์ด์ ํ ํ ์ ์๋ ๊ฑด์ง index๋ก ๊ธธ์ด๋ฅผ ์๋ฅผ ์ ์๋์ง ๐
์๋์ ์ฝ๋๊ฐ ์ค์ ๋ก ์ ํ ์ฝ๋์ด๋ค. postSearchHistoryBox๊ฐ hive.box์์ ํด๋น ๋ด์ฉ์ ์ถ๋ ฅํด์ค๋๊ฑด๋ฐ, ๊ทธ์ค์์๋ keyword๋ง RxList ํ์ ์ ๋ด์์ ์ถ๋ ฅ์ํจ๋ค. ๊ทธ๋ฅ Listํ์ ์ด๋ฉด substring()์ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ์๋๋ฐ RxList๋ ๊ทธ ๋ฉ์๋๋ฅผ ์ ์ฉ์ํฌ ์ ์๋ค.
RxList ํ์ ์์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์๊น๋ฅผ ์ฐพ๋ค๊ฐ 10๊ฐ ์ด์๋ง ์๋๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๊ธธ์ด๋ฅผ ๊ฐ์งํด์ 10๊ฐ๋ฅผ ์ฑ์ฐ๋ฉด ๋ฌด์กฐ๊ฑด ๋ง์ง๋ง ์์๋ฅผ ์ง์ฐ๊ณ ์์ชฝ์ ์๋ก์ด ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ผ๋ก ํด๊ฒฐํ๋ค.
void toList(int userId){
historyList.clear();
for(var item in postSearchHistoryBox.value.values.where((element) => element.userId == userId)){
if(historyList.length == 10){
historyList.removeLast();
}
historyList.insert(0, item.keyword);
historyList;
}
}
ํ์ง๋ง ๊ทธ ์์ค์์๋ removeLast()๊ฐ ์ ์ฉ์ด ์๋๋ ์ค ์๊ณ ์์ฒญ ๋ฒ๋ฒ ๊ฑฐ๋ ธ๋ค. ๋ค์ ํ๋ฒ ๋๋ ๊ฑฐ์ง๋ง ์ด๋ด ๋ ๊ณต์๋ฌธ์๋ฅผ ๊ผผ๊ผผํ๊ฒ ํ์ด๋ด์ผ ํ๋ค. ๊ฒฐ๊ตญ ๋ต์ ๊ณต์๋ฌธ์์์ ์ฐพ์๋ค. ๊ตฌ๊ธ๋ง์ ํจ๊ณผ์ ์ผ๋ก ํ์ง ๋ชปํ ๊ฑด์ง ๋ต์ ๋ชป ์ฐพ๋ค๊ฐ ๊ณต์๋ฌธ์๋ฅผ ํ๋ํ๋ ์ฝ์ด์ ํด๋น ๋ฉ์๋๋ฅผ ์ฐพ์๋ค. removeLast()๋ ๋ฌด์กฐ๊ฑด ๋ง์ง๋ง ์์๋ฅผ ์ง์๋ด๋๊ฑฐ๊ณ , ์ด ์ธ์๋ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ์ง์ฐ๋ ๊ฒ๋ ์๊ณ ๋ค์ํ๊ฒ ์๋ค!
โก๏ธ ์ฐธ๊ณ
https://pub.dev/documentation/observable_ish/latest/list_list/RxList-class.html