Skip to content

Instantly share code, notes, and snippets.

@rifkyputra
rifkyputra / falsehoods-programming-time-list.md
Created November 20, 2024 17:28 — forked from timvisee/falsehoods-programming-time-list.md
Falsehoods programmers believe about time, in a single list

Falsehoods programmers believe about time

This is a compiled list of falsehoods programmers tend to believe about working with time.

Don't re-invent a date time library yourself. If you think you understand everything about time, you're probably doing it wrong.

Falsehoods

  • There are always 24 hours in a day.
  • February is always 28 days long.
  • Any 24-hour period will always begin and end in the same day (or week, or month).
import 'dart:async';
void main() async {
Stream<String> stream = Stream.periodic(Duration(seconds: 1), (_) {
return 'hello';
});
Stream<String> stream2 = () async* {
yield* (stream);
}();
import 'dart:async';
void main() async{
var c = StreamController();
Stream stream = c.stream;
Sink sink = c.sink;
Timer.periodic(Duration(seconds: 1),(_) {
sink.add('hello');
@rifkyputra
rifkyputra / launch.json
Last active April 21, 2022 11:54
launch json grpc chat
{
"configurations": [
{
"name": "On Emulator (Debug Dev)",
"type": "dart",
"request": "launch",
"program": "lib/main.dart",
"flutterMode": "debug",
"args": [
"--dart-define=GRPC_PORT=54242",
class RegisterUserPage extends StatefulWidget {
const RegisterUserPage({Key? key}) : super(key: key);
static const String routeName = 'RegisterUserPage';
@override
State<RegisterUserPage> createState() => _RegisterUserPageState();
}
class _RegisterUserPageState extends State<RegisterUserPage> {
@rifkyputra
rifkyputra / chat_room_page.dart
Created April 21, 2022 11:29
chat room page
class ChatRoomPage extends StatefulWidget {
const ChatRoomPage({Key? key}) : super(key: key);
static const routeName = 'ChatRoomPage';
@override
State<ChatRoomPage> createState() => _ChatRoomPageState();
}
class _ChatRoomPageState extends State<ChatRoomPage> {
@rifkyputra
rifkyputra / main.dart
Created April 21, 2022 11:21
client main - GRPC Chat App with Flutter and Dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final settingsController = SettingsController(SettingsService());
await settingsController.loadSettings();
final channel = ClientChannel(
EnvConfig.grpcAddress,
port: EnvConfig.grpcPort,
@rifkyputra
rifkyputra / cubits.dart
Created April 21, 2022 11:20
cubit - GRPC Chat App with Flutter and Dart
class AppCubit extends HydratedCubit<AppState> {
AppCubit() : super(const AppState());
void saveUsername(String username) async {
emit(state.copyWith(username: username));
}
@override
AppState? fromJson(Map<String, dynamic> json) {
return AppState.fromJson(json);
@rifkyputra
rifkyputra / grpc_server.dart
Last active April 21, 2022 11:09
server - GRPC Chat App with Flutter and Dart
import 'dart:async';
import 'package:grpc/grpc.dart';
import 'package:uuid/uuid.dart';
import 'package:fixnum/fixnum.dart' as fn;
import 'proto/chat.pbgrpc.dart';
Future<void> main() async {
final server = Server(
[ChatService()],
@rifkyputra
rifkyputra / chat.proto
Last active April 22, 2022 14:08
chat proto - GRPC Chat App with Flutter and Dart
syntax = "proto3";
service ChatMessagingService {
rpc Subscribe(SubscribeRequest) returns (stream MessageResponse);
rpc SendMessage(MessageRequest) returns (Empty);
}