১. শুরু করার আগে
সিনেমা বা রেস্তোরাঁর সুপারিশ করা থেকে শুরু করে বিনোদনমূলক ভিডিও হাইলাইট করা পর্যন্ত, সুপারিশ ইঞ্জিন, যা সুপারিশকারী নামেও পরিচিত, মেশিন লার্নিংয়ের একটি অত্যন্ত গুরুত্বপূর্ণ প্রয়োগ। সুপারিশকারীরা আপনাকে আপনার ব্যবহারকারীদের কাছে বিপুল সংখ্যক প্রার্থীর কাছ থেকে আকর্ষণীয় সামগ্রী উপস্থাপন করতে সহায়তা করে। উদাহরণস্বরূপ, গুগল প্লে স্টোর ইনস্টল করার জন্য লক্ষ লক্ষ অ্যাপ অফার করে, যেখানে ইউটিউব দেখার জন্য কোটি কোটি ভিডিও সরবরাহ করে। এবং প্রতিদিন আরও বেশি অ্যাপ এবং ভিডিও যুক্ত হচ্ছে।
এই কোডল্যাবে, আপনি শিখবেন কিভাবে একটি ফুলস্ট্যাক সুপারিশকারী তৈরি করতে হয়:
- সিনেমার সুপারিশের জন্য একটি পুনরুদ্ধার এবং একটি র্যাঙ্কিং মডেল প্রশিক্ষণের জন্য টেনসরফ্লো সুপারিশকারীরা
- মডেলগুলিকে পরিবেশন করার জন্য টেনসরফ্লো পরিবেশন করা হচ্ছে
- প্রস্তাবিত সিনেমা প্রদর্শনের জন্য একটি ক্রস-প্ল্যাটফর্ম অ্যাপ তৈরি করতে ফ্লাটার
পূর্বশর্ত
- ডার্টের সাথে ফ্লাটার ডেভেলপমেন্টের প্রাথমিক জ্ঞান
- টেনসরফ্লো ব্যবহার করে মেশিন লার্নিংয়ের প্রাথমিক জ্ঞান, যেমন প্রশিক্ষণ বনাম স্থাপনা
- সুপারিশ ব্যবস্থার সাথে প্রাথমিক পরিচিতি
- পাইথন, টার্মিনাল এবং ডকার সম্পর্কে প্রাথমিক জ্ঞান।
তুমি কি শিখবে
- টেনসরফ্লো সুপারিশকারীদের ব্যবহার করে পুনরুদ্ধার এবং র্যাঙ্কিং মডেলগুলিকে কীভাবে প্রশিক্ষণ দেওয়া যায়
- টেনসরফ্লো সার্ভিং ব্যবহার করে প্রশিক্ষিত সুপারিশ মডেলগুলিকে কীভাবে পরিবেশন করবেন
- প্রস্তাবিত আইটেমগুলি প্রদর্শনের জন্য কীভাবে একটি ক্রস-প্ল্যাটফর্ম ফ্লাটার অ্যাপ তৈরি করবেন
তোমার যা লাগবে
- Flutter SDK সম্পর্কে
- Flutter-এর জন্য Android এবং iOS সেটআপ
- ফ্লটারের জন্য ডেস্কটপ সেটআপ
- ফ্লটারের জন্য ওয়েব সেটআপ
- ফ্লাটার এবং ডার্টের জন্য ভিজ্যুয়াল স্টুডিও কোড (ভিএস কোড) সেটআপ
- ডকার
- ব্যাশ
- পাইথন ৩.৭+
- কোলাবে প্রবেশাধিকার
2. আপনার ফ্লাটার ডেভেলপমেন্ট পরিবেশ সেট আপ করুন
ফ্লাটার ডেভেলপমেন্টের জন্য, এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনার দুটি সফ্টওয়্যারের প্রয়োজন - ফ্লাটার SDK এবং একটি সম্পাদক ।
আপনি এই ডিভাইসগুলির যেকোনো একটি ব্যবহার করে কোডল্যাবের ফ্রন্টএন্ড চালাতে পারেন:
- iOS সিমুলেটর (Xcode টুল ইনস্টল করার প্রয়োজন)।
- অ্যান্ড্রয়েড এমুলেটর (অ্যান্ড্রয়েড স্টুডিওতে সেটআপ প্রয়োজন)।
- একটি ব্রাউজার (ডিবাগিংয়ের জন্য Chrome প্রয়োজন)।
- উইন্ডোজ , লিনাক্স , অথবা ম্যাকওএস ডেস্কটপ অ্যাপ্লিকেশন হিসেবে। আপনি যে প্ল্যাটফর্মে স্থাপন করার পরিকল্পনা করছেন সেখানেই আপনাকে ডেভেলপ করতে হবে। সুতরাং, যদি আপনি একটি উইন্ডোজ ডেস্কটপ অ্যাপ ডেভেলপ করতে চান, তাহলে উপযুক্ত বিল্ড চেইন অ্যাক্সেস করার জন্য আপনাকে উইন্ডোজেই ডেভেলপ করতে হবে। অপারেটিং সিস্টেম-নির্দিষ্ট প্রয়োজনীয়তা রয়েছে যা docs.flutter.dev/desktop এ বিস্তারিতভাবে বর্ণনা করা হয়েছে।
ব্যাকএন্ডের জন্য, আপনার প্রয়োজন হবে:
- একটি লিনাক্স মেশিন অথবা একটি ইন্টেল-ভিত্তিক ম্যাক।
৩. সেট আপ করুন
এই কোডল্যাবের কোড ডাউনলোড করতে:
- এই কোডল্যাবের জন্য GitHub সংগ্রহস্থলে যান।
- এই কোডল্যাবের সমস্ত কোড ডাউনলোড করতে কোড > ডাউনলোড জিপ ক্লিক করুন।

- আপনার প্রয়োজনীয় সমস্ত রিসোর্স সহ একটি
codelabs-mainরুট ফোল্ডার আনপ্যাক করতে ডাউনলোড করা জিপ ফাইলটি আনজিপ করুন।
এই কোডল্যাবের জন্য, আপনার কেবল রিপোজিটরির tfrs-flutter/ সাবডিরেক্টরিতে থাকা ফাইলগুলি প্রয়োজন, যেখানে একাধিক ফোল্ডার রয়েছে:
-
step0থেকেstep5ফোল্ডারগুলিতে স্টার্টার কোড থাকে যা আপনি এই কোডল্যাবের প্রতিটি ধাপের জন্য তৈরি করেন। -
finishedফোল্ডারটিতে সমাপ্ত নমুনা অ্যাপের জন্য সম্পূর্ণ কোড রয়েছে। - প্রতিটি ফোল্ডারে একটি
backendসাবফোল্ডার থাকে, যার মধ্যে সুপারিশ ইঞ্জিন ব্যাকএন্ড কোড থাকে এবং একটিfrontendসাবফোল্ডার থাকে, যার মধ্যে ফ্লটার ফ্রন্টএন্ড কোড থাকে।
৪. প্রকল্পের জন্য নির্ভরতা ডাউনলোড করুন
ব্যাকএন্ড
আমরা আমাদের ব্যাকএন্ড তৈরি করতে Flask ব্যবহার করব। আপনার টার্মিনাল খুলুন এবং নিম্নলিখিতটি চালান:
pip install Flask flask-cors requests numpy
ফ্রন্টএন্ড
- VS Code-এ, File > Open folder-এ ক্লিক করুন এবং তারপর আপনার আগে ডাউনলোড করা সোর্স কোড থেকে
step0ফোল্ডারটি নির্বাচন করুন। -
step0/frontend/lib/main.dartফাইলটি খুলুন। যদি আপনি একটি VS কোড ডায়ালগ দেখতে পান যা আপনাকে স্টার্টার অ্যাপের জন্য প্রয়োজনীয় প্যাকেজগুলি ডাউনলোড করতে অনুরোধ করে, তাহলে Get packages এ ক্লিক করুন। - যদি আপনি এই ডায়ালগটি দেখতে না পান, তাহলে আপনার টার্মিনালটি খুলুন এবং তারপর
step0/frontendফোল্ডারেflutter pub getকমান্ডটি চালান।

৫. ধাপ ০: স্টার্টার অ্যাপটি চালান
- VS Code-এ
step0/frontend/lib/main.dartফাইলটি খুলুন, নিশ্চিত করুন যে Android Emulator বা iOS Simulator সঠিকভাবে সেট আপ করা আছে এবং স্ট্যাটাস বারে প্রদর্শিত হচ্ছে।
উদাহরণস্বরূপ, অ্যান্ড্রয়েড এমুলেটরের সাথে Pixel 5 ব্যবহার করার সময় আপনি যা দেখতে পাবেন তা এখানে:

iOS সিমুলেটর ব্যবহার করে iPhone 13 ব্যবহার করলে আপনি যা দেখতে পাবেন তা এখানে:

- ক্লিক করুন
ডিবাগিং শুরু করুন ।
অ্যাপটি চালান এবং অন্বেষণ করুন
অ্যাপটি আপনার অ্যান্ড্রয়েড এমুলেটর বা iOS সিমুলেটরে চালু হওয়া উচিত। UI বেশ সহজ। একটি টেক্সট ফিল্ড আছে যা ব্যবহারকারীকে ইউজার আইডি হিসেবে টেক্সট টাইপ করতে দেয়। ফ্লাটার অ্যাপটি ব্যাকএন্ডে কোয়েরি রিকোয়েস্ট পাঠাবে, যা 2টি সুপারিশ মডেল চালায় এবং মুভি সুপারিশের একটি র্যাঙ্ক করা তালিকা ফেরত দেয়। প্রতিক্রিয়া পাওয়ার পর ফ্রন্টএন্ড UI-তে ফলাফল প্রদর্শন করবে।


আপনি যদি এখনই সুপারিশে ক্লিক করেন, তাহলে কিছুই হবে না কারণ অ্যাপটি এখনও ব্যাকএন্ডের সাথে যোগাযোগ করতে পারছে না।
৬. ধাপ ১: সুপারিশ ইঞ্জিনের জন্য পুনরুদ্ধার এবং র্যাঙ্কিং মডেল তৈরি করুন।
বাস্তব-বিশ্বের সুপারিশ ইঞ্জিনগুলি প্রায়শই একাধিক পর্যায়ে গঠিত হয়:
- পুনরুদ্ধারের পর্যায়টি সম্ভাব্য সকল প্রার্থীর মধ্য থেকে শত শত প্রার্থীর একটি প্রাথমিক সেট নির্বাচন করার জন্য দায়ী। এই মডেলের মূল লক্ষ্য হল ব্যবহারকারীর আগ্রহ নেই এমন সমস্ত প্রার্থীকে দক্ষতার সাথে বাদ দেওয়া। যেহেতু পুনরুদ্ধার মডেলটি লক্ষ লক্ষ প্রার্থীর সাথে কাজ করতে পারে, তাই এটিকে গণনাগতভাবে দক্ষ হতে হবে।
- র্যাঙ্কিং পর্যায়ে পুনরুদ্ধার মডেলের ফলাফলগুলি নেওয়া হয় এবং সম্ভাব্য সেরা মুষ্টিমেয় সুপারিশগুলি নির্বাচন করার জন্য সেগুলিকে সূক্ষ্মভাবে সুরক্ষিত করা হয়। এর কাজ হল ব্যবহারকারীর আগ্রহের বিষয়গুলির সেটকে শত শত সম্ভাব্য প্রার্থীদের একটি সংক্ষিপ্ত তালিকাতে সংকুচিত করা।
- র্যাঙ্কিং-পরবর্তী পর্যায়টি বৈচিত্র্য, সতেজতা এবং ন্যায্যতা নিশ্চিত করতে সাহায্য করে এবং প্রার্থীর আইটেমগুলিকে কয়েক ডজন ক্রমে কার্যকর সুপারিশের একটি সেটে পুনর্গঠিত করে।

এই কোডল্যাবের জন্য, আপনি জনপ্রিয় MovieLens ডেটাসেট ব্যবহার করে একটি পুনরুদ্ধার মডেল এবং একটি র্যাঙ্কিং মডেল প্রশিক্ষণ দেবেন। আপনি Colab এর মাধ্যমে নীচের প্রশিক্ষণ কোডটি খুলতে পারেন এবং নির্দেশাবলী অনুসরণ করতে পারেন:
৭. ধাপ ২: সুপারিশ ইঞ্জিন ব্যাকএন্ড তৈরি করুন
এখন যেহেতু আপনি পুনরুদ্ধার এবং র্যাঙ্কিং মডেলগুলি প্রশিক্ষণ পেয়েছেন, আপনি সেগুলি স্থাপন করতে পারেন এবং একটি ব্যাকএন্ড তৈরি করতে পারেন।
টেনসরফ্লো পরিবেশন শুরু করুন
যেহেতু আপনাকে প্রস্তাবিত চলচ্চিত্র তালিকা তৈরি করতে পুনরুদ্ধার এবং র্যাঙ্কিং উভয় মডেল ব্যবহার করতে হবে, তাই আপনি টেনসরফ্লো সার্ভিং ব্যবহার করে একই সময়ে উভয় মডেল ব্যবহার করতে পারবেন।
- আপনার টার্মিনালে, আপনার কম্পিউটারের
step2/backendফোল্ডারে যান এবং ডকার দিয়ে TensorFlow Serving শুরু করুন:
docker run -t --rm -p 8501:8501 -p 8500:8500 -v "$(pwd)/:/models/" tensorflow/serving --model_config_file=/models/models.config
ডকার প্রথমে স্বয়ংক্রিয়ভাবে টেনসরফ্লো সার্ভিং ইমেজটি ডাউনলোড করে, যা এক মিনিট সময় নেয়। এরপর, টেনসরফ্লো সার্ভিং শুরু হওয়া উচিত। লগটি এই কোড স্নিপেটের মতো দেখাবে:
2022-04-24 09:32:06.461702: I tensorflow_serving/model_servers/server_core.cc:465] Adding/updating models.
2022-04-24 09:32:06.461843: I tensorflow_serving/model_servers/server_core.cc:591] (Re-)adding model: retrieval
2022-04-24 09:32:06.461907: I tensorflow_serving/model_servers/server_core.cc:591] (Re-)adding model: ranking
2022-04-24 09:32:06.576920: I tensorflow_serving/core/basic_manager.cc:740] Successfully reserved resources to load servable {name: retrieval version: 123}
2022-04-24 09:32:06.576993: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: retrieval version: 123}
2022-04-24 09:32:06.577011: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: retrieval version: 123}
2022-04-24 09:32:06.577848: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:38] Reading SavedModel from: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.583809: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:90] Reading meta graph with tags { serve }
2022-04-24 09:32:06.583879: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:132] Reading SavedModel debug info (if present) from: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.584970: I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-04-24 09:32:06.629900: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:206] Restoring SavedModel bundle.
2022-04-24 09:32:06.634662: I external/org_tensorflow/tensorflow/core/platform/profile_utils/cpu_utils.cc:114] CPU Frequency: 2800000000 Hz
2022-04-24 09:32:06.672534: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:190] Running initialization op on SavedModel bundle at path: /models/retrieval/exported-retrieval/123
2022-04-24 09:32:06.673629: I tensorflow_serving/core/basic_manager.cc:740] Successfully reserved resources to load servable {name: ranking version: 123}
2022-04-24 09:32:06.673765: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: ranking version: 123}
2022-04-24 09:32:06.673786: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: ranking version: 123}
2022-04-24 09:32:06.674731: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:38] Reading SavedModel from: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.683557: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:90] Reading meta graph with tags { serve }
2022-04-24 09:32:06.683601: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:132] Reading SavedModel debug info (if present) from: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.688665: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:277] SavedModel load for tags { serve }; Status: success: OK. Took 110815 microseconds.
2022-04-24 09:32:06.690019: I tensorflow_serving/servables/tensorflow/saved_model_warmup_util.cc:59] No warmup data file found at /models/retrieval/exported-retrieval/123/assets.extra/tf_serving_warmup_requests
2022-04-24 09:32:06.693025: I tensorflow_serving/core/loader_harness.cc:87] Successfully loaded servable version {name: retrieval version: 123}
2022-04-24 09:32:06.702594: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:206] Restoring SavedModel bundle.
2022-04-24 09:32:06.745361: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:190] Running initialization op on SavedModel bundle at path: /models/ranking/exported-ranking/123
2022-04-24 09:32:06.772363: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:277] SavedModel load for tags { serve }; Status: success: OK. Took 97633 microseconds.
2022-04-24 09:32:06.774853: I tensorflow_serving/servables/tensorflow/saved_model_warmup_util.cc:59] No warmup data file found at /models/ranking/exported-ranking/123/assets.extra/tf_serving_warmup_requests
2022-04-24 09:32:06.777706: I tensorflow_serving/core/loader_harness.cc:87] Successfully loaded servable version {name: ranking version: 123}
2022-04-24 09:32:06.778969: I tensorflow_serving/model_servers/server_core.cc:486] Finished adding/updating models
2022-04-24 09:32:06.779030: I tensorflow_serving/model_servers/server.cc:367] Profiler service is enabled
2022-04-24 09:32:06.784217: I tensorflow_serving/model_servers/server.cc:393] Running gRPC ModelServer at 0.0.0.0:8500 ...
[warn] getaddrinfo: address family for nodename not supported
2022-04-24 09:32:06.785748: I tensorflow_serving/model_servers/server.cc:414] Exporting HTTP/REST API at:localhost:8501 ...
[evhttp_server.cc : 245] NET_LOG: Entering the event loop ...
একটি নতুন এন্ডপয়েন্ট তৈরি করুন
যেহেতু টেনসরফ্লো সার্ভিং একাধিক সিকোয়েন্সিয়াল মডেলকে 'চেইনিং' সমর্থন করে না, তাই আপনাকে একটি নতুন পরিষেবা তৈরি করতে হবে যা পুনরুদ্ধার এবং র্যাঙ্কিং মডেলগুলিকে সংযুক্ত করে।
-
step2/backend/recommendations.pyফাইলেরget_recommendations()ফাংশনে এই কোডটি যোগ করুন:
user_id = request.get_json()["user_id"]
retrieval_request = json.dumps({"instances": [user_id]})
retrieval_response = requests.post(RETRIEVAL_URL, data=retrieval_request)
movie_candidates = retrieval_response.json()["predictions"][0]["output_2"]
ranking_queries = [
{"user_id": u, "movie_title": m}
for (u, m) in zip([user_id] * NUM_OF_CANDIDATES, movie_candidates)
]
ranking_request = json.dumps({"instances": ranking_queries})
ranking_response = requests.post(RANKING_URL, data=ranking_request)
movies_scores = list(np.squeeze(ranking_response.json()["predictions"]))
ranked_movies = [
m[1] for m in sorted(list(zip(movies_scores, movie_candidates)), reverse=True)
]
return make_response(jsonify({"movies": ranked_movies}), 200)
ফ্লাস্ক পরিষেবা শুরু করুন
এখন আপনি ফ্লাস্ক পরিষেবা শুরু করতে পারেন।
- আপনার টার্মিনালে,
step2/backend/ফোল্ডারে যান এবং নিম্নলিখিতটি চালান:
FLASK_APP=recommender.py FLASK_ENV=development flask run
ফ্লাস্ক http://localhost:5000/recommend এ একটি নতুন এন্ডপয়েন্ট তৈরি করবে। আপনি নীচের মত লগটি দেখতে পাবেন:
* Serving Flask app 'recommender.py' (lazy loading) * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 705-382-264 127.0.0.1 - - [25/Apr/2022 19:44:47] "POST /recommend HTTP/1.1" 200 -
আপনি এন্ডপয়েন্টে একটি নমুনা অনুরোধ পাঠাতে পারেন যাতে নিশ্চিত হতে পারেন যে এটি প্রত্যাশা অনুযায়ী কাজ করছে:
curl -X POST -H "Content-Type: application/json" -d '{"user_id":"42"}' http://localhost:5000/recommend
এন্ডপয়েন্টটি ব্যবহারকারী 42 এর জন্য প্রস্তাবিত চলচ্চিত্রের একটি তালিকা প্রদান করবে:
{
"movies": [
"While You Were Sleeping (1995)",
"Preacher's Wife, The (1996)",
"Michael (1996)",
"Lion King, The (1994)",
"Father of the Bride Part II (1995)",
"Sleepless in Seattle (1993)",
"101 Dalmatians (1996)",
"Bridges of Madison County, The (1995)",
"Rudy (1993)",
"Jack (1996)"
]
}
ব্যস! আপনি একটি ব্যবহারকারী আইডির উপর ভিত্তি করে সিনেমা সুপারিশ করার জন্য একটি ব্যাকএন্ড সফলভাবে তৈরি করেছেন।
৮. ধাপ ৩: অ্যান্ড্রয়েড এবং আইওএসের জন্য ফ্লটার অ্যাপ তৈরি করুন
ব্যাকএন্ড প্রস্তুত। আপনি Flutter অ্যাপ থেকে সিনেমার সুপারিশ জিজ্ঞাসা করার জন্য অনুরোধ পাঠানো শুরু করতে পারেন।
ফ্রন্টএন্ড অ্যাপটি মোটামুটি সহজ। এতে কেবল একটি টেক্সটফিল্ড রয়েছে যা ব্যবহারকারীর আইডি গ্রহণ করে এবং আপনার তৈরি ব্যাকএন্ডে অনুরোধটি ( recommend() ফাংশনে) পাঠায়। প্রতিক্রিয়া পাওয়ার পরে, অ্যাপ UI একটি ListView-এ প্রস্তাবিত সিনেমাগুলি প্রদর্শন করে।
-
step3/frontend/lib/main.dartফাইলেরrecommend()ফাংশনে এই কোডটি যোগ করুন:
final response = await http.post(
Uri.parse('http://' + _server + ':5000/recommend'),
headers: <String, String>{
'Content-Type': 'application/json',
},
body: jsonEncode(<String, String>{
'user_id': _userIDController.text,
}),
);
অ্যাপটি ব্যাকএন্ড থেকে প্রতিক্রিয়া পাওয়ার পর, আপনি নির্দিষ্ট ব্যবহারকারীর জন্য প্রস্তাবিত চলচ্চিত্রের তালিকা প্রদর্শনের জন্য UI আপডেট করেন।
- উপরের কোডের ঠিক নিচে এই কোডটি যোগ করুন:
if (response.statusCode == 200) {
return List<String>.from(jsonDecode(response.body)['movies']);
} else {
throw Exception('Error response');
}
চালাও।
- ক্লিক করুন
ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন। - একটি ব্যবহারকারী আইডি (অর্থাৎ, 42) লিখুন এবং তারপর সুপারিশ নির্বাচন করুন।


৯. ধাপ ৪: ডেস্কটপ প্ল্যাটফর্মগুলিতে Flutter অ্যাপটি চালান
অ্যান্ড্রয়েড এবং আইওএস ছাড়াও, ফ্লাটার লিনাক্স, ম্যাক এবং উইন্ডোজ সহ ডেস্কটপ প্ল্যাটফর্মগুলিকেও সমর্থন করে।
লিনাক্স
- নিশ্চিত করুন যে লক্ষ্য ডিভাইসটি সেট করা আছে
VSCode এর স্ট্যাটাস বারে। - ক্লিক করুন
ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন। - একটি ব্যবহারকারী আইডি (অর্থাৎ, 42) লিখুন এবং তারপর সুপারিশ নির্বাচন করুন।

ম্যাক
- Mac এর জন্য, আপনাকে উপযুক্ত এনটাইটেলমেন্ট সেট আপ করতে হবে কারণ অ্যাপটি ব্যাকএন্ডে HTTP অনুরোধ পাঠাবে। আরও বিস্তারিত জানার জন্য অনুগ্রহ করে এনটাইটেলমেন্ট এবং অ্যাপ স্যান্ডবক্স দেখুন।
এই কোডটি যথাক্রমে step4/frontend/macOS/Runner/DebugProfile.entitlements এবং step4/frontend/macOS/Runner/Release.entitlements এ যোগ করুন:
<key>com.apple.security.network.client</key>
<true/>
- নিশ্চিত করুন যে লক্ষ্য ডিভাইসটি সেট করা আছে
VSCode এর স্ট্যাটাস বারে। - ক্লিক করুন
ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন। - একটি ব্যবহারকারী আইডি (অর্থাৎ, 42) লিখুন এবং তারপর সুপারিশ নির্বাচন করুন।

জানালা
- নিশ্চিত করুন যে লক্ষ্য ডিভাইসটি সেট করা আছে
VSCode এর স্ট্যাটাস বারে। - ক্লিক করুন
ডিবাগিং শুরু করুন এবং তারপর অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন। - একটি ব্যবহারকারী আইডি (অর্থাৎ, 42) লিখুন এবং তারপর সুপারিশ নির্বাচন করুন।

১০. ধাপ ৫: ওয়েব প্ল্যাটফর্মে Flutter অ্যাপটি চালান
আপনি আরও একটি কাজ করতে পারেন তা হল Flutter অ্যাপে ওয়েব সাপোর্ট যোগ করা। ডিফল্টরূপে ওয়েব প্ল্যাটফর্মটি Flutter অ্যাপের জন্য স্বয়ংক্রিয়ভাবে সক্ষম থাকে, তাই আপনাকে যা করতে হবে তা হল এটি চালু করা।
- নিশ্চিত করুন যে লক্ষ্য ডিভাইসটি সেট করা আছে
VSCode এর স্ট্যাটাস বারে। - ক্লিক করুন
ডিবাগিং শুরু করুন এবং তারপর Chrome ব্রাউজারে অ্যাপটি লোড হওয়ার জন্য অপেক্ষা করুন। - একটি ব্যবহারকারী আইডি (অর্থাৎ, 42) লিখুন এবং তারপর সুপারিশ নির্বাচন করুন।

১১. অভিনন্দন
আপনি আপনার ব্যবহারকারীদের সিনেমা সুপারিশ করার জন্য একটি ফুলস্ট্যাক অ্যাপ তৈরি করেছেন!
যদিও অ্যাপটি শুধুমাত্র সিনেমার সুপারিশ করে, আপনি একটি শক্তিশালী সুপারিশ ইঞ্জিন তৈরির সামগ্রিক কর্মপ্রবাহ শিখেছেন এবং একটি Flutter অ্যাপে সুপারিশগুলি গ্রহণ করার দক্ষতা অর্জন করেছেন। আপনি যা শিখেছেন তা সহজেই অন্যান্য পরিস্থিতিতে (যেমন, ই-কমার্স, খাবার এবং ছোট ভিডিও) প্রয়োগ করতে পারেন।